﻿2026-06-21T23:05:52.6981321Z ##[group]Run ./traceable-reqs check --json
2026-06-21T23:05:52.6981852Z [36;1m./traceable-reqs check --json[0m
2026-06-21T23:05:52.6995871Z shell: /usr/bin/bash -e {0}
2026-06-21T23:05:52.6996204Z ##[endgroup]
2026-06-21T23:05:52.7868372Z {
2026-06-21T23:05:52.7869075Z   "schemaVersion": 1,
2026-06-21T23:05:52.7869576Z   "summary": {
2026-06-21T23:05:52.7870034Z     "requirementCount": 280,
2026-06-21T23:05:52.7870515Z     "completeCount": 280,
2026-06-21T23:05:52.7870988Z     "incompleteCount": 0,
2026-06-21T23:05:52.7871454Z     "findingCount": 0
2026-06-21T23:05:52.7871889Z   },
2026-06-21T23:05:52.7872300Z   "requirements": [
2026-06-21T23:05:52.7872719Z     {
2026-06-21T23:05:52.7873201Z       "id": "REQ-API-1",
2026-06-21T23:05:52.7873773Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T23:05:52.7874409Z       "requiredStages": [
2026-06-21T23:05:52.7874915Z         "impl",
2026-06-21T23:05:52.7875339Z         "unit",
2026-06-21T23:05:52.7875762Z         "int"
2026-06-21T23:05:52.7876239Z       ],
2026-06-21T23:05:52.7876631Z       "stages": {
2026-06-21T23:05:52.7877039Z         "doc": {
2026-06-21T23:05:52.7877451Z           "complete": false,
2026-06-21T23:05:52.7877907Z           "evidence": []
2026-06-21T23:05:52.7878342Z         },
2026-06-21T23:05:52.7878729Z         "impl": {
2026-06-21T23:05:52.7879218Z           "complete": true,
2026-06-21T23:05:52.7879688Z           "evidence": [
2026-06-21T23:05:52.7880112Z             {
2026-06-21T23:05:52.7880555Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:52.7881070Z               "line": 15
2026-06-21T23:05:52.7881494Z             }
2026-06-21T23:05:52.7881902Z           ]
2026-06-21T23:05:52.7882289Z         },
2026-06-21T23:05:52.7882674Z         "int": {
2026-06-21T23:05:52.7884037Z           "complete": true,
2026-06-21T23:05:52.7884477Z           "evidence": [
2026-06-21T23:05:52.7884908Z             {
2026-06-21T23:05:52.7885350Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:05:52.7885890Z               "line": 13
2026-06-21T23:05:52.7886318Z             }
2026-06-21T23:05:52.7886720Z           ]
2026-06-21T23:05:52.7887120Z         },
2026-06-21T23:05:52.7887509Z         "unit": {
2026-06-21T23:05:52.7887938Z           "complete": true,
2026-06-21T23:05:52.7888382Z           "evidence": [
2026-06-21T23:05:52.7888810Z             {
2026-06-21T23:05:52.7889327Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:52.7889849Z               "line": 717
2026-06-21T23:05:52.7890277Z             },
2026-06-21T23:05:52.7890677Z             {
2026-06-21T23:05:52.7891105Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:52.7891626Z               "line": 804
2026-06-21T23:05:52.7892050Z             }
2026-06-21T23:05:52.7892442Z           ]
2026-06-21T23:05:52.7892826Z         }
2026-06-21T23:05:52.7893206Z       }
2026-06-21T23:05:52.7893596Z     },
2026-06-21T23:05:52.7893958Z     {
2026-06-21T23:05:52.7894370Z       "id": "REQ-API-2",
2026-06-21T23:05:52.7895009Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T23:05:52.7895706Z       "requiredStages": [
2026-06-21T23:05:52.7896149Z         "impl",
2026-06-21T23:05:52.7896573Z         "unit",
2026-06-21T23:05:52.7896998Z         "int"
2026-06-21T23:05:52.7897402Z       ],
2026-06-21T23:05:52.7897794Z       "stages": {
2026-06-21T23:05:52.7898203Z         "doc": {
2026-06-21T23:05:52.7898637Z           "complete": false,
2026-06-21T23:05:52.7899181Z           "evidence": []
2026-06-21T23:05:52.7899614Z         },
2026-06-21T23:05:52.7900010Z         "impl": {
2026-06-21T23:05:52.7900438Z           "complete": true,
2026-06-21T23:05:52.7900894Z           "evidence": [
2026-06-21T23:05:52.7901327Z             {
2026-06-21T23:05:52.7901786Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T23:05:52.7902683Z               "line": 17
2026-06-21T23:05:52.7903106Z             },
2026-06-21T23:05:52.7903489Z             {
2026-06-21T23:05:52.7904213Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:52.7904738Z               "line": 20
2026-06-21T23:05:52.7905167Z             },
2026-06-21T23:05:52.7905555Z             {
2026-06-21T23:05:52.7906009Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:52.7906552Z               "line": 142
2026-06-21T23:05:52.7906995Z             },
2026-06-21T23:05:52.7907395Z             {
2026-06-21T23:05:52.7907864Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7908398Z               "line": 24
2026-06-21T23:05:52.7908836Z             },
2026-06-21T23:05:52.7909283Z             {
2026-06-21T23:05:52.7909737Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7910269Z               "line": 41
2026-06-21T23:05:52.7910705Z             },
2026-06-21T23:05:52.7911108Z             {
2026-06-21T23:05:52.7911578Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7912113Z               "line": 213
2026-06-21T23:05:52.7912541Z             },
2026-06-21T23:05:52.7912947Z             {
2026-06-21T23:05:52.7913408Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7913918Z               "line": 255
2026-06-21T23:05:52.7914354Z             },
2026-06-21T23:05:52.7914764Z             {
2026-06-21T23:05:52.7915223Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7915761Z               "line": 334
2026-06-21T23:05:52.7916210Z             },
2026-06-21T23:05:52.7916606Z             {
2026-06-21T23:05:52.7917073Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7917603Z               "line": 397
2026-06-21T23:05:52.7918042Z             },
2026-06-21T23:05:52.7918400Z             {
2026-06-21T23:05:52.7918701Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7919129Z               "line": 436
2026-06-21T23:05:52.7919405Z             },
2026-06-21T23:05:52.7919672Z             {
2026-06-21T23:05:52.7919987Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.7920325Z               "line": 17
2026-06-21T23:05:52.7920602Z             },
2026-06-21T23:05:52.7920858Z             {
2026-06-21T23:05:52.7921149Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.7921492Z               "line": 30
2026-06-21T23:05:52.7921761Z             },
2026-06-21T23:05:52.7922025Z             {
2026-06-21T23:05:52.7922334Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.7922668Z               "line": 63
2026-06-21T23:05:52.7922949Z             },
2026-06-21T23:05:52.7923207Z             {
2026-06-21T23:05:52.7923493Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.7923832Z               "line": 77
2026-06-21T23:05:52.7924104Z             }
2026-06-21T23:05:52.7924359Z           ]
2026-06-21T23:05:52.7924619Z         },
2026-06-21T23:05:52.7924882Z         "int": {
2026-06-21T23:05:52.7925158Z           "complete": true,
2026-06-21T23:05:52.7925454Z           "evidence": [
2026-06-21T23:05:52.7925740Z             {
2026-06-21T23:05:52.7926036Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:05:52.7926389Z               "line": 14
2026-06-21T23:05:52.7926675Z             },
2026-06-21T23:05:52.7926944Z             {
2026-06-21T23:05:52.7927266Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:05:52.7927610Z               "line": 187
2026-06-21T23:05:52.7927895Z             }
2026-06-21T23:05:52.7928153Z           ]
2026-06-21T23:05:52.7928401Z         },
2026-06-21T23:05:52.7928664Z         "unit": {
2026-06-21T23:05:52.7929035Z           "complete": true,
2026-06-21T23:05:52.7929336Z           "evidence": [
2026-06-21T23:05:52.7929618Z             {
2026-06-21T23:05:52.7929946Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T23:05:52.7930676Z               "line": 82
2026-06-21T23:05:52.7931014Z             },
2026-06-21T23:05:52.7931457Z             {
2026-06-21T23:05:52.7932166Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:52.7932707Z               "line": 279
2026-06-21T23:05:52.7933133Z             },
2026-06-21T23:05:52.7933528Z             {
2026-06-21T23:05:52.7933995Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7934528Z               "line": 709
2026-06-21T23:05:52.7934976Z             },
2026-06-21T23:05:52.7935380Z             {
2026-06-21T23:05:52.7935846Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7936386Z               "line": 720
2026-06-21T23:05:52.7936824Z             },
2026-06-21T23:05:52.7937221Z             {
2026-06-21T23:05:52.7937703Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7938248Z               "line": 873
2026-06-21T23:05:52.7938671Z             },
2026-06-21T23:05:52.7939158Z             {
2026-06-21T23:05:52.7939648Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7940174Z               "line": 919
2026-06-21T23:05:52.7940615Z             },
2026-06-21T23:05:52.7941020Z             {
2026-06-21T23:05:52.7941478Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.7941998Z               "line": 143
2026-06-21T23:05:52.7942527Z             },
2026-06-21T23:05:52.7943053Z             {
2026-06-21T23:05:52.7943773Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.7944540Z               "line": 187
2026-06-21T23:05:52.7945123Z             }
2026-06-21T23:05:52.7945730Z           ]
2026-06-21T23:05:52.7946274Z         }
2026-06-21T23:05:52.7946793Z       }
2026-06-21T23:05:52.7947341Z     },
2026-06-21T23:05:52.7947905Z     {
2026-06-21T23:05:52.7978861Z       "id": "REQ-API-3",
2026-06-21T23:05:52.7979745Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T23:05:52.7980330Z       "requiredStages": [
2026-06-21T23:05:52.7980807Z         "impl",
2026-06-21T23:05:52.7981198Z         "unit",
2026-06-21T23:05:52.7981584Z         "int"
2026-06-21T23:05:52.7981989Z       ],
2026-06-21T23:05:52.7982367Z       "stages": {
2026-06-21T23:05:52.7982785Z         "doc": {
2026-06-21T23:05:52.7983208Z           "complete": false,
2026-06-21T23:05:52.7983677Z           "evidence": []
2026-06-21T23:05:52.7984129Z         },
2026-06-21T23:05:52.7984529Z         "impl": {
2026-06-21T23:05:52.7984957Z           "complete": true,
2026-06-21T23:05:52.7985441Z           "evidence": [
2026-06-21T23:05:52.7985856Z             {
2026-06-21T23:05:52.7986324Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:05:52.7986854Z               "line": 27
2026-06-21T23:05:52.7987291Z             },
2026-06-21T23:05:52.7987691Z             {
2026-06-21T23:05:52.7988147Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7988671Z               "line": 566
2026-06-21T23:05:52.7989172Z             }
2026-06-21T23:05:52.7989586Z           ]
2026-06-21T23:05:52.7989973Z         },
2026-06-21T23:05:52.7990367Z         "int": {
2026-06-21T23:05:52.7990805Z           "complete": true,
2026-06-21T23:05:52.7991256Z           "evidence": [
2026-06-21T23:05:52.7991673Z             {
2026-06-21T23:05:52.7992144Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:05:52.7992674Z               "line": 261
2026-06-21T23:05:52.7993106Z             }
2026-06-21T23:05:52.7993501Z           ]
2026-06-21T23:05:52.7993874Z         },
2026-06-21T23:05:52.7994261Z         "unit": {
2026-06-21T23:05:52.7994679Z           "complete": true,
2026-06-21T23:05:52.7995123Z           "evidence": [
2026-06-21T23:05:52.7995561Z             {
2026-06-21T23:05:52.7996020Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:05:52.7996550Z               "line": 280
2026-06-21T23:05:52.7996979Z             },
2026-06-21T23:05:52.7997405Z             {
2026-06-21T23:05:52.7997801Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.7998535Z               "line": 948
2026-06-21T23:05:52.7999051Z             }
2026-06-21T23:05:52.7999661Z           ]
2026-06-21T23:05:52.8000052Z         }
2026-06-21T23:05:52.8000437Z       }
2026-06-21T23:05:52.8000804Z     },
2026-06-21T23:05:52.8001182Z     {
2026-06-21T23:05:52.8001564Z       "id": "REQ-API-4",
2026-06-21T23:05:52.8004582Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T23:05:52.8006891Z       "requiredStages": [
2026-06-21T23:05:52.8007340Z         "doc",
2026-06-21T23:05:52.8007688Z         "impl",
2026-06-21T23:05:52.8007955Z         "unit"
2026-06-21T23:05:52.8008211Z       ],
2026-06-21T23:05:52.8008464Z       "stages": {
2026-06-21T23:05:52.8008727Z         "doc": {
2026-06-21T23:05:52.8009171Z           "complete": true,
2026-06-21T23:05:52.8009491Z           "evidence": [
2026-06-21T23:05:52.8009758Z             {
2026-06-21T23:05:52.8010045Z               "path": "CONTEXT.md",
2026-06-21T23:05:52.8010344Z               "line": 149
2026-06-21T23:05:52.8010612Z             }
2026-06-21T23:05:52.8010865Z           ]
2026-06-21T23:05:52.8011108Z         },
2026-06-21T23:05:52.8011354Z         "impl": {
2026-06-21T23:05:52.8011629Z           "complete": true,
2026-06-21T23:05:52.8011916Z           "evidence": [
2026-06-21T23:05:52.8012182Z             {
2026-06-21T23:05:52.8012474Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:52.8012807Z               "line": 484
2026-06-21T23:05:52.8013079Z             }
2026-06-21T23:05:52.8013326Z           ]
2026-06-21T23:05:52.8013569Z         },
2026-06-21T23:05:52.8013817Z         "int": {
2026-06-21T23:05:52.8014100Z           "complete": false,
2026-06-21T23:05:52.8014394Z           "evidence": []
2026-06-21T23:05:52.8014665Z         },
2026-06-21T23:05:52.8014917Z         "unit": {
2026-06-21T23:05:52.8015194Z           "complete": true,
2026-06-21T23:05:52.8015485Z           "evidence": [
2026-06-21T23:05:52.8015757Z             {
2026-06-21T23:05:52.8016043Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:52.8016387Z               "line": 657
2026-06-21T23:05:52.8016657Z             },
2026-06-21T23:05:52.8016922Z             {
2026-06-21T23:05:52.8017217Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:52.8017546Z               "line": 681
2026-06-21T23:05:52.8017822Z             },
2026-06-21T23:05:52.8018081Z             {
2026-06-21T23:05:52.8018372Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:52.8018685Z               "line": 705
2026-06-21T23:05:52.8019058Z             }
2026-06-21T23:05:52.8019310Z           ]
2026-06-21T23:05:52.8019543Z         }
2026-06-21T23:05:52.8019789Z       }
2026-06-21T23:05:52.8020031Z     },
2026-06-21T23:05:52.8020267Z     {
2026-06-21T23:05:52.8020529Z       "id": "REQ-ARCH-1",
2026-06-21T23:05:52.8020853Z       "title": "Many small acyclically-layered crates",
2026-06-21T23:05:52.8021200Z       "requiredStages": [
2026-06-21T23:05:52.8021483Z         "impl"
2026-06-21T23:05:52.8021735Z       ],
2026-06-21T23:05:52.8021986Z       "stages": {
2026-06-21T23:05:52.8022241Z         "doc": {
2026-06-21T23:05:52.8022514Z           "complete": false,
2026-06-21T23:05:52.8022814Z           "evidence": []
2026-06-21T23:05:52.8023090Z         },
2026-06-21T23:05:52.8023339Z         "impl": {
2026-06-21T23:05:52.8023609Z           "complete": true,
2026-06-21T23:05:52.8023905Z           "evidence": [
2026-06-21T23:05:52.8024158Z             {
2026-06-21T23:05:52.8024448Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T23:05:52.8024924Z               "line": 18
2026-06-21T23:05:52.8025201Z             },
2026-06-21T23:05:52.8025550Z             {
2026-06-21T23:05:52.8025850Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T23:05:52.8026189Z               "line": 12
2026-06-21T23:05:52.8026499Z             },
2026-06-21T23:05:52.8026756Z             {
2026-06-21T23:05:52.8027046Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T23:05:52.8027487Z               "line": 12
2026-06-21T23:05:52.8027778Z             }
2026-06-21T23:05:52.8028030Z           ]
2026-06-21T23:05:52.8028283Z         },
2026-06-21T23:05:52.8028541Z         "int": {
2026-06-21T23:05:52.8028827Z           "complete": false,
2026-06-21T23:05:52.8029198Z           "evidence": []
2026-06-21T23:05:52.8029485Z         },
2026-06-21T23:05:52.8029744Z         "unit": {
2026-06-21T23:05:52.8030022Z           "complete": false,
2026-06-21T23:05:52.8030325Z           "evidence": []
2026-06-21T23:05:52.8030620Z         }
2026-06-21T23:05:52.8030892Z       }
2026-06-21T23:05:52.8031126Z     },
2026-06-21T23:05:52.8031422Z     {
2026-06-21T23:05:52.8031690Z       "id": "REQ-ARCH-2",
2026-06-21T23:05:52.8032076Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T23:05:52.8032470Z       "requiredStages": [
2026-06-21T23:05:52.8032764Z         "impl"
2026-06-21T23:05:52.8033012Z       ],
2026-06-21T23:05:52.8033279Z       "stages": {
2026-06-21T23:05:52.8033535Z         "doc": {
2026-06-21T23:05:52.8033807Z           "complete": false,
2026-06-21T23:05:52.8034102Z           "evidence": []
2026-06-21T23:05:52.8034385Z         },
2026-06-21T23:05:52.8034637Z         "impl": {
2026-06-21T23:05:52.8034910Z           "complete": true,
2026-06-21T23:05:52.8035206Z           "evidence": [
2026-06-21T23:05:52.8035485Z             {
2026-06-21T23:05:52.8035785Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T23:05:52.8036124Z               "line": 18
2026-06-21T23:05:52.8036415Z             }
2026-06-21T23:05:52.8036691Z           ]
2026-06-21T23:05:52.8036939Z         },
2026-06-21T23:05:52.8037197Z         "int": {
2026-06-21T23:05:52.8037493Z           "complete": false,
2026-06-21T23:05:52.8037801Z           "evidence": []
2026-06-21T23:05:52.8038081Z         },
2026-06-21T23:05:52.8038343Z         "unit": {
2026-06-21T23:05:52.8038623Z           "complete": false,
2026-06-21T23:05:52.8038929Z           "evidence": []
2026-06-21T23:05:52.8039315Z         }
2026-06-21T23:05:52.8039568Z       }
2026-06-21T23:05:52.8039820Z     },
2026-06-21T23:05:52.8040078Z     {
2026-06-21T23:05:52.8040351Z       "id": "REQ-ARCH-3",
2026-06-21T23:05:52.8040771Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T23:05:52.8041214Z       "requiredStages": [
2026-06-21T23:05:52.8041514Z         "impl",
2026-06-21T23:05:52.8041796Z         "unit"
2026-06-21T23:05:52.8042059Z       ],
2026-06-21T23:05:52.8042316Z       "stages": {
2026-06-21T23:05:52.8042588Z         "doc": {
2026-06-21T23:05:52.8042884Z           "complete": false,
2026-06-21T23:05:52.8043366Z           "evidence": []
2026-06-21T23:05:52.8043757Z         },
2026-06-21T23:05:52.8044024Z         "impl": {
2026-06-21T23:05:52.8044311Z           "complete": true,
2026-06-21T23:05:52.8044611Z           "evidence": [
2026-06-21T23:05:52.8044887Z             {
2026-06-21T23:05:52.8045197Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T23:05:52.8045540Z               "line": 34
2026-06-21T23:05:52.8045823Z             },
2026-06-21T23:05:52.8046088Z             {
2026-06-21T23:05:52.8046398Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T23:05:52.8046733Z               "line": 41
2026-06-21T23:05:52.8047009Z             }
2026-06-21T23:05:52.8047266Z           ]
2026-06-21T23:05:52.8047509Z         },
2026-06-21T23:05:52.8047780Z         "int": {
2026-06-21T23:05:52.8048058Z           "complete": false,
2026-06-21T23:05:52.8048352Z           "evidence": []
2026-06-21T23:05:52.8048788Z         },
2026-06-21T23:05:52.8049121Z         "unit": {
2026-06-21T23:05:52.8049399Z           "complete": true,
2026-06-21T23:05:52.8049813Z           "evidence": [
2026-06-21T23:05:52.8050090Z             {
2026-06-21T23:05:52.8050400Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T23:05:52.8050748Z               "line": 51
2026-06-21T23:05:52.8051033Z             },
2026-06-21T23:05:52.8051289Z             {
2026-06-21T23:05:52.8051594Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T23:05:52.8051932Z               "line": 71
2026-06-21T23:05:52.8052213Z             },
2026-06-21T23:05:52.8052477Z             {
2026-06-21T23:05:52.8052777Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T23:05:52.8053111Z               "line": 83
2026-06-21T23:05:52.8053382Z             }
2026-06-21T23:05:52.8053633Z           ]
2026-06-21T23:05:52.8053879Z         }
2026-06-21T23:05:52.8054123Z       }
2026-06-21T23:05:52.8054365Z     },
2026-06-21T23:05:52.8054632Z     {
2026-06-21T23:05:52.8054889Z       "id": "REQ-ARCH-4",
2026-06-21T23:05:52.8055281Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T23:05:52.8055687Z       "requiredStages": [
2026-06-21T23:05:52.8055978Z         "impl",
2026-06-21T23:05:52.8056245Z         "unit"
2026-06-21T23:05:52.8056505Z       ],
2026-06-21T23:05:52.8056754Z       "stages": {
2026-06-21T23:05:52.8057020Z         "doc": {
2026-06-21T23:05:52.8057307Z           "complete": false,
2026-06-21T23:05:52.8057617Z           "evidence": []
2026-06-21T23:05:52.8057884Z         },
2026-06-21T23:05:52.8058140Z         "impl": {
2026-06-21T23:05:52.8058417Z           "complete": true,
2026-06-21T23:05:52.8058702Z           "evidence": [
2026-06-21T23:05:52.8059048Z             {
2026-06-21T23:05:52.8059358Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8059705Z               "line": 165
2026-06-21T23:05:52.8059978Z             },
2026-06-21T23:05:52.8060245Z             {
2026-06-21T23:05:52.8060554Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8060893Z               "line": 188
2026-06-21T23:05:52.8061175Z             },
2026-06-21T23:05:52.8061433Z             {
2026-06-21T23:05:52.8061736Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8062077Z               "line": 208
2026-06-21T23:05:52.8062363Z             },
2026-06-21T23:05:52.8062625Z             {
2026-06-21T23:05:52.8062916Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8063255Z               "line": 223
2026-06-21T23:05:52.8063526Z             },
2026-06-21T23:05:52.8063779Z             {
2026-06-21T23:05:52.8064071Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8064406Z               "line": 273
2026-06-21T23:05:52.8064688Z             }
2026-06-21T23:05:52.8064950Z           ]
2026-06-21T23:05:52.8065197Z         },
2026-06-21T23:05:52.8065449Z         "int": {
2026-06-21T23:05:52.8065731Z           "complete": false,
2026-06-21T23:05:52.8066032Z           "evidence": []
2026-06-21T23:05:52.8066313Z         },
2026-06-21T23:05:52.8066571Z         "unit": {
2026-06-21T23:05:52.8066838Z           "complete": true,
2026-06-21T23:05:52.8067132Z           "evidence": [
2026-06-21T23:05:52.8067403Z             {
2026-06-21T23:05:52.8067708Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8068042Z               "line": 334
2026-06-21T23:05:52.8068319Z             },
2026-06-21T23:05:52.8068577Z             {
2026-06-21T23:05:52.8068868Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8069262Z               "line": 344
2026-06-21T23:05:52.8069547Z             },
2026-06-21T23:05:52.8069818Z             {
2026-06-21T23:05:52.8070105Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8070439Z               "line": 355
2026-06-21T23:05:52.8070715Z             },
2026-06-21T23:05:52.8070962Z             {
2026-06-21T23:05:52.8071373Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8071707Z               "line": 366
2026-06-21T23:05:52.8072092Z             },
2026-06-21T23:05:52.8072349Z             {
2026-06-21T23:05:52.8072642Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8072982Z               "line": 378
2026-06-21T23:05:52.8073258Z             },
2026-06-21T23:05:52.8073519Z             {
2026-06-21T23:05:52.8073805Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8090440Z               "line": 391
2026-06-21T23:05:52.8090814Z             },
2026-06-21T23:05:52.8091085Z             {
2026-06-21T23:05:52.8091391Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8091758Z               "line": 402
2026-06-21T23:05:52.8092034Z             },
2026-06-21T23:05:52.8092307Z             {
2026-06-21T23:05:52.8092606Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8092945Z               "line": 419
2026-06-21T23:05:52.8093231Z             },
2026-06-21T23:05:52.8093492Z             {
2026-06-21T23:05:52.8093792Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.8094121Z               "line": 547
2026-06-21T23:05:52.8094402Z             }
2026-06-21T23:05:52.8094659Z           ]
2026-06-21T23:05:52.8094911Z         }
2026-06-21T23:05:52.8095149Z       }
2026-06-21T23:05:52.8095399Z     },
2026-06-21T23:05:52.8095647Z     {
2026-06-21T23:05:52.8095907Z       "id": "REQ-CLI-1",
2026-06-21T23:05:52.8097274Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T23:05:52.8098533Z       "requiredStages": [
2026-06-21T23:05:52.8098827Z         "impl",
2026-06-21T23:05:52.8099184Z         "unit"
2026-06-21T23:05:52.8099446Z       ],
2026-06-21T23:05:52.8099704Z       "stages": {
2026-06-21T23:05:52.8099962Z         "doc": {
2026-06-21T23:05:52.8100238Z           "complete": false,
2026-06-21T23:05:52.8100539Z           "evidence": []
2026-06-21T23:05:52.8100812Z         },
2026-06-21T23:05:52.8101066Z         "impl": {
2026-06-21T23:05:52.8101340Z           "complete": true,
2026-06-21T23:05:52.8101627Z           "evidence": [
2026-06-21T23:05:52.8101894Z             {
2026-06-21T23:05:52.8102190Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8102533Z               "line": 225
2026-06-21T23:05:52.8102814Z             },
2026-06-21T23:05:52.8103073Z             {
2026-06-21T23:05:52.8103359Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8103697Z               "line": 1093
2026-06-21T23:05:52.8103982Z             },
2026-06-21T23:05:52.8104231Z             {
2026-06-21T23:05:52.8104517Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8104841Z               "line": 1720
2026-06-21T23:05:52.8105133Z             },
2026-06-21T23:05:52.8105395Z             {
2026-06-21T23:05:52.8105686Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8106011Z               "line": 3124
2026-06-21T23:05:52.8106293Z             }
2026-06-21T23:05:52.8106543Z           ]
2026-06-21T23:05:52.8106784Z         },
2026-06-21T23:05:52.8107018Z         "int": {
2026-06-21T23:05:52.8107300Z           "complete": false,
2026-06-21T23:05:52.8107600Z           "evidence": []
2026-06-21T23:05:52.8107882Z         },
2026-06-21T23:05:52.8108139Z         "unit": {
2026-06-21T23:05:52.8108415Z           "complete": true,
2026-06-21T23:05:52.8108706Z           "evidence": [
2026-06-21T23:05:52.8109035Z             {
2026-06-21T23:05:52.8109329Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8109654Z               "line": 7947
2026-06-21T23:05:52.8109939Z             }
2026-06-21T23:05:52.8110350Z           ]
2026-06-21T23:05:52.8110597Z         }
2026-06-21T23:05:52.8110851Z       }
2026-06-21T23:05:52.8111184Z     },
2026-06-21T23:05:52.8111423Z     {
2026-06-21T23:05:52.8111675Z       "id": "REQ-CLI-2",
2026-06-21T23:05:52.8112612Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T23:05:52.8113512Z       "requiredStages": [
2026-06-21T23:05:52.8113789Z         "impl",
2026-06-21T23:05:52.8114056Z         "unit"
2026-06-21T23:05:52.8114309Z       ],
2026-06-21T23:05:52.8114556Z       "stages": {
2026-06-21T23:05:52.8114820Z         "doc": {
2026-06-21T23:05:52.8115092Z           "complete": false,
2026-06-21T23:05:52.8115388Z           "evidence": []
2026-06-21T23:05:52.8115660Z         },
2026-06-21T23:05:52.8115908Z         "impl": {
2026-06-21T23:05:52.8116185Z           "complete": true,
2026-06-21T23:05:52.8116476Z           "evidence": [
2026-06-21T23:05:52.8116748Z             {
2026-06-21T23:05:52.8117055Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8117392Z               "line": 414
2026-06-21T23:05:52.8117668Z             },
2026-06-21T23:05:52.8117921Z             {
2026-06-21T23:05:52.8118236Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T23:05:52.8118575Z               "line": 97
2026-06-21T23:05:52.8118856Z             },
2026-06-21T23:05:52.8119405Z             {
2026-06-21T23:05:52.8119711Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:05:52.8120047Z               "line": 256
2026-06-21T23:05:52.8120319Z             },
2026-06-21T23:05:52.8120562Z             {
2026-06-21T23:05:52.8120838Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8121167Z               "line": 434
2026-06-21T23:05:52.8121444Z             },
2026-06-21T23:05:52.8121701Z             {
2026-06-21T23:05:52.8121984Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8122319Z               "line": 1174
2026-06-21T23:05:52.8122586Z             },
2026-06-21T23:05:52.8122838Z             {
2026-06-21T23:05:52.8123114Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8123433Z               "line": 1958
2026-06-21T23:05:52.8123710Z             },
2026-06-21T23:05:52.8123968Z             {
2026-06-21T23:05:52.8124249Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8124578Z               "line": 2047
2026-06-21T23:05:52.8124846Z             },
2026-06-21T23:05:52.8125102Z             {
2026-06-21T23:05:52.8125371Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8125700Z               "line": 2108
2026-06-21T23:05:52.8125981Z             }
2026-06-21T23:05:52.8126234Z           ]
2026-06-21T23:05:52.8126482Z         },
2026-06-21T23:05:52.8126726Z         "int": {
2026-06-21T23:05:52.8126998Z           "complete": false,
2026-06-21T23:05:52.8127284Z           "evidence": []
2026-06-21T23:05:52.8127549Z         },
2026-06-21T23:05:52.8127805Z         "unit": {
2026-06-21T23:05:52.8128072Z           "complete": true,
2026-06-21T23:05:52.8128363Z           "evidence": [
2026-06-21T23:05:52.8128635Z             {
2026-06-21T23:05:52.8128936Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:05:52.8129350Z               "line": 338
2026-06-21T23:05:52.8129617Z             },
2026-06-21T23:05:52.8129870Z             {
2026-06-21T23:05:52.8130156Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8130483Z               "line": 8102
2026-06-21T23:05:52.8130745Z             }
2026-06-21T23:05:52.8130999Z           ]
2026-06-21T23:05:52.8131247Z         }
2026-06-21T23:05:52.8131480Z       }
2026-06-21T23:05:52.8131708Z     },
2026-06-21T23:05:52.8131951Z     {
2026-06-21T23:05:52.8132205Z       "id": "REQ-CLI-3",
2026-06-21T23:05:52.8133151Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T23:05:52.8134294Z       "requiredStages": [
2026-06-21T23:05:52.8134585Z         "impl",
2026-06-21T23:05:52.8134837Z         "unit"
2026-06-21T23:05:52.8135087Z       ],
2026-06-21T23:05:52.8135335Z       "stages": {
2026-06-21T23:05:52.8135594Z         "doc": {
2026-06-21T23:05:52.8135869Z           "complete": false,
2026-06-21T23:05:52.8136165Z           "evidence": []
2026-06-21T23:05:52.8136446Z         },
2026-06-21T23:05:52.8136694Z         "impl": {
2026-06-21T23:05:52.8136972Z           "complete": true,
2026-06-21T23:05:52.8137258Z           "evidence": [
2026-06-21T23:05:52.8137519Z             {
2026-06-21T23:05:52.8137806Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8138152Z               "line": 1087
2026-06-21T23:05:52.8138440Z             }
2026-06-21T23:05:52.8138698Z           ]
2026-06-21T23:05:52.8139013Z         },
2026-06-21T23:05:52.8139261Z         "int": {
2026-06-21T23:05:52.8139548Z           "complete": false,
2026-06-21T23:05:52.8139844Z           "evidence": []
2026-06-21T23:05:52.8140115Z         },
2026-06-21T23:05:52.8140362Z         "unit": {
2026-06-21T23:05:52.8140644Z           "complete": true,
2026-06-21T23:05:52.8140929Z           "evidence": [
2026-06-21T23:05:52.8141202Z             {
2026-06-21T23:05:52.8141483Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8141826Z               "line": 7912
2026-06-21T23:05:52.8142112Z             }
2026-06-21T23:05:52.8142370Z           ]
2026-06-21T23:05:52.8142621Z         }
2026-06-21T23:05:52.8142869Z       }
2026-06-21T23:05:52.8143114Z     },
2026-06-21T23:05:52.8143350Z     {
2026-06-21T23:05:52.8143619Z       "id": "REQ-CLI-4",
2026-06-21T23:05:52.8146069Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T23:05:52.8148036Z       "requiredStages": [],
2026-06-21T23:05:52.8148318Z       "stages": {
2026-06-21T23:05:52.8148575Z         "doc": {
2026-06-21T23:05:52.8148855Z           "complete": false,
2026-06-21T23:05:52.8149230Z           "evidence": []
2026-06-21T23:05:52.8149512Z         },
2026-06-21T23:05:52.8149760Z         "impl": {
2026-06-21T23:05:52.8150122Z           "complete": true,
2026-06-21T23:05:52.8150584Z           "evidence": [
2026-06-21T23:05:52.8150985Z             {
2026-06-21T23:05:52.8151368Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8151833Z               "line": 5678
2026-06-21T23:05:52.8152213Z             }
2026-06-21T23:05:52.8152537Z           ]
2026-06-21T23:05:52.8152940Z         },
2026-06-21T23:05:52.8153316Z         "int": {
2026-06-21T23:05:52.8153725Z           "complete": false,
2026-06-21T23:05:52.8154113Z           "evidence": []
2026-06-21T23:05:52.8154451Z         },
2026-06-21T23:05:52.8154853Z         "unit": {
2026-06-21T23:05:52.8155220Z           "complete": false,
2026-06-21T23:05:52.8155624Z           "evidence": []
2026-06-21T23:05:52.8156016Z         }
2026-06-21T23:05:52.8156368Z       }
2026-06-21T23:05:52.8156763Z     },
2026-06-21T23:05:52.8157090Z     {
2026-06-21T23:05:52.8157486Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T23:05:52.8160891Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T23:05:52.8164361Z       "requiredStages": [
2026-06-21T23:05:52.8164749Z         "impl",
2026-06-21T23:05:52.8165136Z         "unit"
2026-06-21T23:05:52.8165499Z       ],
2026-06-21T23:05:52.8165851Z       "stages": {
2026-06-21T23:05:52.8166247Z         "doc": {
2026-06-21T23:05:52.8166618Z           "complete": false,
2026-06-21T23:05:52.8166991Z           "evidence": []
2026-06-21T23:05:52.8167455Z         },
2026-06-21T23:05:52.8168275Z         "impl": {
2026-06-21T23:05:52.8168681Z           "complete": true,
2026-06-21T23:05:52.8169156Z           "evidence": [
2026-06-21T23:05:52.8169510Z             {
2026-06-21T23:05:52.8169966Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8170402Z               "line": 8
2026-06-21T23:05:52.8170784Z             },
2026-06-21T23:05:52.8171185Z             {
2026-06-21T23:05:52.8171544Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8172033Z               "line": 51
2026-06-21T23:05:52.8172387Z             },
2026-06-21T23:05:52.8172786Z             {
2026-06-21T23:05:52.8173196Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8173629Z               "line": 82
2026-06-21T23:05:52.8174040Z             },
2026-06-21T23:05:52.8174418Z             {
2026-06-21T23:05:52.8174831Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8175261Z               "line": 229
2026-06-21T23:05:52.8175615Z             }
2026-06-21T23:05:52.8176006Z           ]
2026-06-21T23:05:52.8176345Z         },
2026-06-21T23:05:52.8176683Z         "int": {
2026-06-21T23:05:52.8177088Z           "complete": false,
2026-06-21T23:05:52.8177523Z           "evidence": []
2026-06-21T23:05:52.8177917Z         },
2026-06-21T23:05:52.8178253Z         "unit": {
2026-06-21T23:05:52.8178602Z           "complete": true,
2026-06-21T23:05:52.8179096Z           "evidence": [
2026-06-21T23:05:52.8179459Z             {
2026-06-21T23:05:52.8179846Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8180321Z               "line": 249
2026-06-21T23:05:52.8180681Z             },
2026-06-21T23:05:52.8181077Z             {
2026-06-21T23:05:52.8181469Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8181940Z               "line": 256
2026-06-21T23:05:52.8182317Z             },
2026-06-21T23:05:52.8182666Z             {
2026-06-21T23:05:52.8183081Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8183551Z               "line": 263
2026-06-21T23:05:52.8183927Z             },
2026-06-21T23:05:52.8184300Z             {
2026-06-21T23:05:52.8184677Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8185148Z               "line": 270
2026-06-21T23:05:52.8185514Z             },
2026-06-21T23:05:52.8185850Z             {
2026-06-21T23:05:52.8186295Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8186747Z               "line": 297
2026-06-21T23:05:52.8187162Z             },
2026-06-21T23:05:52.8187502Z             {
2026-06-21T23:05:52.8187982Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8188477Z               "line": 307
2026-06-21T23:05:52.8189013Z             },
2026-06-21T23:05:52.8189400Z             {
2026-06-21T23:05:52.8189820Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8190239Z               "line": 317
2026-06-21T23:05:52.8190669Z             },
2026-06-21T23:05:52.8191034Z             {
2026-06-21T23:05:52.8191428Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8191856Z               "line": 331
2026-06-21T23:05:52.8192228Z             },
2026-06-21T23:05:52.8192606Z             {
2026-06-21T23:05:52.8193025Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8193459Z               "line": 340
2026-06-21T23:05:52.8193839Z             },
2026-06-21T23:05:52.8194192Z             {
2026-06-21T23:05:52.8194598Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8195031Z               "line": 348
2026-06-21T23:05:52.8195384Z             }
2026-06-21T23:05:52.8195819Z           ]
2026-06-21T23:05:52.8196156Z         }
2026-06-21T23:05:52.8196526Z       }
2026-06-21T23:05:52.8196869Z     },
2026-06-21T23:05:52.8197183Z     {
2026-06-21T23:05:52.8197607Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T23:05:52.8206026Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T23:05:52.8210439Z       "requiredStages": [
2026-06-21T23:05:52.8210801Z         "impl",
2026-06-21T23:05:52.8211222Z         "unit"
2026-06-21T23:05:52.8211560Z       ],
2026-06-21T23:05:52.8212887Z       "stages": {
2026-06-21T23:05:52.8213287Z         "doc": {
2026-06-21T23:05:52.8213663Z           "complete": false,
2026-06-21T23:05:52.8214122Z           "evidence": []
2026-06-21T23:05:52.8214484Z         },
2026-06-21T23:05:52.8214855Z         "impl": {
2026-06-21T23:05:52.8215235Z           "complete": true,
2026-06-21T23:05:52.8215603Z           "evidence": [
2026-06-21T23:05:52.8216014Z             {
2026-06-21T23:05:52.8216442Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8216905Z               "line": 141
2026-06-21T23:05:52.8217280Z             },
2026-06-21T23:05:52.8217632Z             {
2026-06-21T23:05:52.8218046Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8218456Z               "line": 1376
2026-06-21T23:05:52.8218823Z             },
2026-06-21T23:05:52.8219304Z             {
2026-06-21T23:05:52.8219724Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8220176Z               "line": 2145
2026-06-21T23:05:52.8220556Z             },
2026-06-21T23:05:52.8221037Z             {
2026-06-21T23:05:52.8221472Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8222015Z               "line": 4368
2026-06-21T23:05:52.8222407Z             },
2026-06-21T23:05:52.8222780Z             {
2026-06-21T23:05:52.8223170Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8223647Z               "line": 4466
2026-06-21T23:05:52.8224010Z             },
2026-06-21T23:05:52.8224372Z             {
2026-06-21T23:05:52.8224777Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8225173Z               "line": 5257
2026-06-21T23:05:52.8225582Z             },
2026-06-21T23:05:52.8225959Z             {
2026-06-21T23:05:52.8226378Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8226812Z               "line": 39
2026-06-21T23:05:52.8227176Z             }
2026-06-21T23:05:52.8282989Z           ]
2026-06-21T23:05:52.8283399Z         },
2026-06-21T23:05:52.8283673Z         "int": {
2026-06-21T23:05:52.8284026Z           "complete": false,
2026-06-21T23:05:52.8284345Z           "evidence": []
2026-06-21T23:05:52.8284608Z         },
2026-06-21T23:05:52.8284870Z         "unit": {
2026-06-21T23:05:52.8285147Z           "complete": true,
2026-06-21T23:05:52.8285444Z           "evidence": [
2026-06-21T23:05:52.8285739Z             {
2026-06-21T23:05:52.8286032Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8286369Z               "line": 10272
2026-06-21T23:05:52.8286645Z             },
2026-06-21T23:05:52.8286898Z             {
2026-06-21T23:05:52.8287170Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8287499Z               "line": 281
2026-06-21T23:05:52.8287766Z             },
2026-06-21T23:05:52.8288014Z             {
2026-06-21T23:05:52.8288301Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8288626Z               "line": 358
2026-06-21T23:05:52.8288909Z             },
2026-06-21T23:05:52.8289243Z             {
2026-06-21T23:05:52.8289543Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8289877Z               "line": 381
2026-06-21T23:05:52.8290158Z             },
2026-06-21T23:05:52.8290411Z             {
2026-06-21T23:05:52.8290701Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:05:52.8291030Z               "line": 395
2026-06-21T23:05:52.8291310Z             }
2026-06-21T23:05:52.8291558Z           ]
2026-06-21T23:05:52.8291805Z         }
2026-06-21T23:05:52.8292043Z       }
2026-06-21T23:05:52.8292282Z     },
2026-06-21T23:05:52.8292530Z     {
2026-06-21T23:05:52.8292797Z       "id": "REQ-CONSENT-1",
2026-06-21T23:05:52.8293926Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T23:05:52.8295035Z       "requiredStages": [
2026-06-21T23:05:52.8295321Z         "impl",
2026-06-21T23:05:52.8295573Z         "unit"
2026-06-21T23:05:52.8295831Z       ],
2026-06-21T23:05:52.8296069Z       "stages": {
2026-06-21T23:05:52.8296342Z         "doc": {
2026-06-21T23:05:52.8296616Z           "complete": false,
2026-06-21T23:05:52.8296910Z           "evidence": []
2026-06-21T23:05:52.8297181Z         },
2026-06-21T23:05:52.8297425Z         "impl": {
2026-06-21T23:05:52.8297687Z           "complete": true,
2026-06-21T23:05:52.8297978Z           "evidence": [
2026-06-21T23:05:52.8298246Z             {
2026-06-21T23:05:52.8298556Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8298895Z               "line": 27
2026-06-21T23:05:52.8299247Z             },
2026-06-21T23:05:52.8299498Z             {
2026-06-21T23:05:52.8299784Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8300113Z               "line": 75
2026-06-21T23:05:52.8300389Z             },
2026-06-21T23:05:52.8300919Z             {
2026-06-21T23:05:52.8301219Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8301685Z               "line": 98
2026-06-21T23:05:52.8301950Z             },
2026-06-21T23:05:52.8302198Z             {
2026-06-21T23:05:52.8302494Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:05:52.8302823Z               "line": 82
2026-06-21T23:05:52.8303095Z             },
2026-06-21T23:05:52.8303362Z             {
2026-06-21T23:05:52.8303649Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:05:52.8303987Z               "line": 109
2026-06-21T23:05:52.8304254Z             },
2026-06-21T23:05:52.8304515Z             {
2026-06-21T23:05:52.8304817Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:05:52.8305151Z               "line": 127
2026-06-21T23:05:52.8305423Z             },
2026-06-21T23:05:52.8305680Z             {
2026-06-21T23:05:52.8305977Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:05:52.8306315Z               "line": 142
2026-06-21T23:05:52.8306611Z             },
2026-06-21T23:05:52.8306874Z             {
2026-06-21T23:05:52.8307186Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8307518Z               "line": 7048
2026-06-21T23:05:52.8307794Z             }
2026-06-21T23:05:52.8308042Z           ]
2026-06-21T23:05:52.8308300Z         },
2026-06-21T23:05:52.8308552Z         "int": {
2026-06-21T23:05:52.8308834Z           "complete": false,
2026-06-21T23:05:52.8309210Z           "evidence": []
2026-06-21T23:05:52.8309492Z         },
2026-06-21T23:05:52.8309746Z         "unit": {
2026-06-21T23:05:52.8310020Z           "complete": true,
2026-06-21T23:05:52.8310315Z           "evidence": [
2026-06-21T23:05:52.8310587Z             {
2026-06-21T23:05:52.8310897Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8311245Z               "line": 334
2026-06-21T23:05:52.8311522Z             },
2026-06-21T23:05:52.8311765Z             {
2026-06-21T23:05:52.8312071Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8312407Z               "line": 380
2026-06-21T23:05:52.8312683Z             },
2026-06-21T23:05:52.8312940Z             {
2026-06-21T23:05:52.8313240Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8313565Z               "line": 391
2026-06-21T23:05:52.8313841Z             },
2026-06-21T23:05:52.8314094Z             {
2026-06-21T23:05:52.8314389Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:05:52.8314713Z               "line": 165
2026-06-21T23:05:52.8314990Z             },
2026-06-21T23:05:52.8315251Z             {
2026-06-21T23:05:52.8315540Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:05:52.8315865Z               "line": 184
2026-06-21T23:05:52.8316136Z             },
2026-06-21T23:05:52.8316398Z             {
2026-06-21T23:05:52.8316679Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:05:52.8317027Z               "line": 204
2026-06-21T23:05:52.8317304Z             },
2026-06-21T23:05:52.8317561Z             {
2026-06-21T23:05:52.8317850Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8318179Z               "line": 8334
2026-06-21T23:05:52.8318464Z             }
2026-06-21T23:05:52.8318727Z           ]
2026-06-21T23:05:52.8319499Z         }
2026-06-21T23:05:52.8319747Z       }
2026-06-21T23:05:52.8319981Z     },
2026-06-21T23:05:52.8320229Z     {
2026-06-21T23:05:52.8320494Z       "id": "REQ-CONSENT-2",
2026-06-21T23:05:52.8321558Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T23:05:52.8322584Z       "requiredStages": [
2026-06-21T23:05:52.8322873Z         "impl",
2026-06-21T23:05:52.8323262Z         "unit"
2026-06-21T23:05:52.8323524Z       ],
2026-06-21T23:05:52.8323766Z       "stages": {
2026-06-21T23:05:52.8324130Z         "doc": {
2026-06-21T23:05:52.8324410Z           "complete": false,
2026-06-21T23:05:52.8324696Z           "evidence": []
2026-06-21T23:05:52.8324973Z         },
2026-06-21T23:05:52.8325225Z         "impl": {
2026-06-21T23:05:52.8325498Z           "complete": true,
2026-06-21T23:05:52.8325782Z           "evidence": [
2026-06-21T23:05:52.8326057Z             {
2026-06-21T23:05:52.8326362Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8326692Z               "line": 140
2026-06-21T23:05:52.8326972Z             },
2026-06-21T23:05:52.8327230Z             {
2026-06-21T23:05:52.8327535Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8327873Z               "line": 165
2026-06-21T23:05:52.8328144Z             },
2026-06-21T23:05:52.8328406Z             {
2026-06-21T23:05:52.8328720Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8329152Z               "line": 199
2026-06-21T23:05:52.8329420Z             },
2026-06-21T23:05:52.8329677Z             {
2026-06-21T23:05:52.8329974Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8330312Z               "line": 241
2026-06-21T23:05:52.8330585Z             },
2026-06-21T23:05:52.8330847Z             {
2026-06-21T23:05:52.8331130Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8331464Z               "line": 269
2026-06-21T23:05:52.8331741Z             },
2026-06-21T23:05:52.8332017Z             {
2026-06-21T23:05:52.8332322Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8332661Z               "line": 300
2026-06-21T23:05:52.8332933Z             },
2026-06-21T23:05:52.8333181Z             {
2026-06-21T23:05:52.8333466Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8333793Z               "line": 6839
2026-06-21T23:05:52.8334079Z             },
2026-06-21T23:05:52.8334331Z             {
2026-06-21T23:05:52.8334617Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8334961Z               "line": 6897
2026-06-21T23:05:52.8335247Z             }
2026-06-21T23:05:52.8335500Z           ]
2026-06-21T23:05:52.8335739Z         },
2026-06-21T23:05:52.8335988Z         "int": {
2026-06-21T23:05:52.8336266Z           "complete": false,
2026-06-21T23:05:52.8336564Z           "evidence": []
2026-06-21T23:05:52.8336869Z         },
2026-06-21T23:05:52.8337113Z         "unit": {
2026-06-21T23:05:52.8337385Z           "complete": true,
2026-06-21T23:05:52.8337676Z           "evidence": [
2026-06-21T23:05:52.8337953Z             {
2026-06-21T23:05:52.8338253Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8338592Z               "line": 419
2026-06-21T23:05:52.8338872Z             },
2026-06-21T23:05:52.8339189Z             {
2026-06-21T23:05:52.8339489Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8339838Z               "line": 436
2026-06-21T23:05:52.8340104Z             },
2026-06-21T23:05:52.8340351Z             {
2026-06-21T23:05:52.8340662Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8340991Z               "line": 472
2026-06-21T23:05:52.8341272Z             },
2026-06-21T23:05:52.8341525Z             {
2026-06-21T23:05:52.8341815Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:52.8342149Z               "line": 516
2026-06-21T23:05:52.8342426Z             },
2026-06-21T23:05:52.8342668Z             {
2026-06-21T23:05:52.8342950Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8343283Z               "line": 9614
2026-06-21T23:05:52.8343564Z             },
2026-06-21T23:05:52.8343822Z             {
2026-06-21T23:05:52.8344110Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8344430Z               "line": 9696
2026-06-21T23:05:52.8344706Z             }
2026-06-21T23:05:52.8344950Z           ]
2026-06-21T23:05:52.8345321Z         }
2026-06-21T23:05:52.8345569Z       }
2026-06-21T23:05:52.8345802Z     },
2026-06-21T23:05:52.8346155Z     {
2026-06-21T23:05:52.8346422Z       "id": "REQ-CONSENT-3",
2026-06-21T23:05:52.8348631Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T23:05:52.8350493Z       "requiredStages": [
2026-06-21T23:05:52.8350779Z         "doc",
2026-06-21T23:05:52.8351046Z         "impl",
2026-06-21T23:05:52.8351323Z         "unit",
2026-06-21T23:05:52.8351584Z         "int"
2026-06-21T23:05:52.8351827Z       ],
2026-06-21T23:05:52.8352095Z       "stages": {
2026-06-21T23:05:52.8352357Z         "doc": {
2026-06-21T23:05:52.8352628Z           "complete": true,
2026-06-21T23:05:52.8352909Z           "evidence": [
2026-06-21T23:05:52.8353175Z             {
2026-06-21T23:05:52.8353443Z               "path": "CONTEXT.md",
2026-06-21T23:05:52.8353753Z               "line": 304
2026-06-21T23:05:52.8354029Z             }
2026-06-21T23:05:52.8354274Z           ]
2026-06-21T23:05:52.8354520Z         },
2026-06-21T23:05:52.8354770Z         "impl": {
2026-06-21T23:05:52.8355037Z           "complete": true,
2026-06-21T23:05:52.8355324Z           "evidence": [
2026-06-21T23:05:52.8355595Z             {
2026-06-21T23:05:52.8355938Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:52.8356296Z               "line": 123
2026-06-21T23:05:52.8356572Z             },
2026-06-21T23:05:52.8356836Z             {
2026-06-21T23:05:52.8357151Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:52.8357487Z               "line": 162
2026-06-21T23:05:52.8357761Z             },
2026-06-21T23:05:52.8358018Z             {
2026-06-21T23:05:52.8358318Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:52.8358467Z               "line": 291
2026-06-21T23:05:52.8358590Z             },
2026-06-21T23:05:52.8358716Z             {
2026-06-21T23:05:52.8358891Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:52.8359092Z               "line": 574
2026-06-21T23:05:52.8359230Z             },
2026-06-21T23:05:52.8359355Z             {
2026-06-21T23:05:52.8359535Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:52.8359675Z               "line": 824
2026-06-21T23:05:52.8359806Z             },
2026-06-21T23:05:52.8359929Z             {
2026-06-21T23:05:52.8360095Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8360246Z               "line": 6965
2026-06-21T23:05:52.8360372Z             }
2026-06-21T23:05:52.8360495Z           ]
2026-06-21T23:05:52.8360629Z         },
2026-06-21T23:05:52.8360767Z         "int": {
2026-06-21T23:05:52.8360905Z           "complete": true,
2026-06-21T23:05:52.8361048Z           "evidence": [
2026-06-21T23:05:52.8361176Z             {
2026-06-21T23:05:52.8361358Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T23:05:52.8361510Z               "line": 16
2026-06-21T23:05:52.8361640Z             }
2026-06-21T23:05:52.8361773Z           ]
2026-06-21T23:05:52.8361888Z         },
2026-06-21T23:05:52.8362025Z         "unit": {
2026-06-21T23:05:52.8362179Z           "complete": true,
2026-06-21T23:05:52.8362302Z           "evidence": [
2026-06-21T23:05:52.8362431Z             {
2026-06-21T23:05:52.8362608Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:52.8362744Z               "line": 1019
2026-06-21T23:05:52.8362873Z             },
2026-06-21T23:05:52.8363116Z             {
2026-06-21T23:05:52.8363303Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:52.8363561Z               "line": 1066
2026-06-21T23:05:52.8363684Z             },
2026-06-21T23:05:52.8363808Z             {
2026-06-21T23:05:52.8363994Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:52.8364143Z               "line": 1394
2026-06-21T23:05:52.8364270Z             }
2026-06-21T23:05:52.8364399Z           ]
2026-06-21T23:05:52.8364514Z         }
2026-06-21T23:05:52.8364637Z       }
2026-06-21T23:05:52.8364762Z     },
2026-06-21T23:05:52.8364890Z     {
2026-06-21T23:05:52.8365065Z       "id": "REQ-CONV-1",
2026-06-21T23:05:52.8366518Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T23:05:52.8366699Z       "requiredStages": [
2026-06-21T23:05:52.8366827Z         "impl",
2026-06-21T23:05:52.8366961Z         "unit"
2026-06-21T23:05:52.8367095Z       ],
2026-06-21T23:05:52.8367227Z       "stages": {
2026-06-21T23:05:52.8367353Z         "doc": {
2026-06-21T23:05:52.8367494Z           "complete": false,
2026-06-21T23:05:52.8367634Z           "evidence": []
2026-06-21T23:05:52.8367753Z         },
2026-06-21T23:05:52.8367885Z         "impl": {
2026-06-21T23:05:52.8368033Z           "complete": true,
2026-06-21T23:05:52.8368164Z           "evidence": [
2026-06-21T23:05:52.8368288Z             {
2026-06-21T23:05:52.8368459Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8368588Z               "line": 988
2026-06-21T23:05:52.8368722Z             },
2026-06-21T23:05:52.8368855Z             {
2026-06-21T23:05:52.8369117Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:52.8369251Z               "line": 94
2026-06-21T23:05:52.8369380Z             },
2026-06-21T23:05:52.8369508Z             {
2026-06-21T23:05:52.8369685Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:52.8369819Z               "line": 345
2026-06-21T23:05:52.8369948Z             },
2026-06-21T23:05:52.8370080Z             {
2026-06-21T23:05:52.8370254Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:52.8370399Z               "line": 387
2026-06-21T23:05:52.8370523Z             },
2026-06-21T23:05:52.8370646Z             {
2026-06-21T23:05:52.8370821Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:52.8370965Z               "line": 472
2026-06-21T23:05:52.8371088Z             },
2026-06-21T23:05:52.8371213Z             {
2026-06-21T23:05:52.8371393Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8371537Z               "line": 667
2026-06-21T23:05:52.8371661Z             },
2026-06-21T23:05:52.8371799Z             {
2026-06-21T23:05:52.8371999Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8372143Z               "line": 693
2026-06-21T23:05:52.8372261Z             },
2026-06-21T23:05:52.8372394Z             {
2026-06-21T23:05:52.8372576Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:52.8372709Z               "line": 369
2026-06-21T23:05:52.8372839Z             },
2026-06-21T23:05:52.8372967Z             {
2026-06-21T23:05:52.8373149Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T23:05:52.8373290Z               "line": 19
2026-06-21T23:05:52.8373419Z             }
2026-06-21T23:05:52.8373544Z           ]
2026-06-21T23:05:52.8373671Z         },
2026-06-21T23:05:52.8373801Z         "int": {
2026-06-21T23:05:52.8373953Z           "complete": false,
2026-06-21T23:05:52.8374082Z           "evidence": []
2026-06-21T23:05:52.8374315Z         },
2026-06-21T23:05:52.8374449Z         "unit": {
2026-06-21T23:05:52.8374592Z           "complete": true,
2026-06-21T23:05:52.8374835Z           "evidence": [
2026-06-21T23:05:52.8374964Z             {
2026-06-21T23:05:52.8375159Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8375307Z               "line": 1263
2026-06-21T23:05:52.8375441Z             },
2026-06-21T23:05:52.8375568Z             {
2026-06-21T23:05:52.8375744Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T23:05:52.8375895Z               "line": 108
2026-06-21T23:05:52.8376024Z             },
2026-06-21T23:05:52.8376153Z             {
2026-06-21T23:05:52.8376339Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T23:05:52.8376477Z               "line": 134
2026-06-21T23:05:52.8376611Z             },
2026-06-21T23:05:52.8376739Z             {
2026-06-21T23:05:52.8376906Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T23:05:52.8377063Z               "line": 144
2026-06-21T23:05:52.8377187Z             }
2026-06-21T23:05:52.8377317Z           ]
2026-06-21T23:05:52.8377435Z         }
2026-06-21T23:05:52.8377570Z       }
2026-06-21T23:05:52.8377693Z     },
2026-06-21T23:05:52.8377821Z     {
2026-06-21T23:05:52.8377970Z       "id": "REQ-CONV-2",
2026-06-21T23:05:52.8379197Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T23:05:52.8379358Z       "requiredStages": [
2026-06-21T23:05:52.8379488Z         "impl",
2026-06-21T23:05:52.8379621Z         "unit"
2026-06-21T23:05:52.8379749Z       ],
2026-06-21T23:05:52.8379874Z       "stages": {
2026-06-21T23:05:52.8380002Z         "doc": {
2026-06-21T23:05:52.8380146Z           "complete": false,
2026-06-21T23:05:52.8380283Z           "evidence": []
2026-06-21T23:05:52.8380407Z         },
2026-06-21T23:05:52.8380551Z         "impl": {
2026-06-21T23:05:52.8380698Z           "complete": true,
2026-06-21T23:05:52.8380824Z           "evidence": [
2026-06-21T23:05:52.8380959Z             {
2026-06-21T23:05:52.8381131Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8381276Z               "line": 409
2026-06-21T23:05:52.8381396Z             },
2026-06-21T23:05:52.8381526Z             {
2026-06-21T23:05:52.8381725Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:05:52.8381859Z               "line": 119
2026-06-21T23:05:52.8381991Z             },
2026-06-21T23:05:52.8382121Z             {
2026-06-21T23:05:52.8382315Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.8382454Z               "line": 841
2026-06-21T23:05:52.8382587Z             },
2026-06-21T23:05:52.8382723Z             {
2026-06-21T23:05:52.8382912Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.8383056Z               "line": 852
2026-06-21T23:05:52.8383188Z             },
2026-06-21T23:05:52.8383318Z             {
2026-06-21T23:05:52.8383493Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.8383633Z               "line": 334
2026-06-21T23:05:52.8383765Z             },
2026-06-21T23:05:52.8383892Z             {
2026-06-21T23:05:52.8384061Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8384189Z               "line": 3074
2026-06-21T23:05:52.8384318Z             },
2026-06-21T23:05:52.8384442Z             {
2026-06-21T23:05:52.8384609Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8384757Z               "line": 3090
2026-06-21T23:05:52.8384875Z             },
2026-06-21T23:05:52.8385009Z             {
2026-06-21T23:05:52.8385161Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8385310Z               "line": 3170
2026-06-21T23:05:52.8385544Z             }
2026-06-21T23:05:52.8385677Z           ]
2026-06-21T23:05:52.8385897Z         },
2026-06-21T23:05:52.8386029Z         "int": {
2026-06-21T23:05:52.8386181Z           "complete": false,
2026-06-21T23:05:52.8386323Z           "evidence": []
2026-06-21T23:05:52.8393453Z         },
2026-06-21T23:05:52.8393640Z         "unit": {
2026-06-21T23:05:52.8393796Z           "complete": true,
2026-06-21T23:05:52.8393941Z           "evidence": [
2026-06-21T23:05:52.8394068Z             {
2026-06-21T23:05:52.8394256Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8394391Z               "line": 889
2026-06-21T23:05:52.8394529Z             },
2026-06-21T23:05:52.8394654Z             {
2026-06-21T23:05:52.8394844Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8394983Z               "line": 1014
2026-06-21T23:05:52.8395115Z             },
2026-06-21T23:05:52.8395241Z             {
2026-06-21T23:05:52.8395440Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:05:52.8395584Z               "line": 215
2026-06-21T23:05:52.8395717Z             }
2026-06-21T23:05:52.8395852Z           ]
2026-06-21T23:05:52.8395984Z         }
2026-06-21T23:05:52.8396109Z       }
2026-06-21T23:05:52.8396237Z     },
2026-06-21T23:05:52.8396356Z     {
2026-06-21T23:05:52.8396505Z       "id": "REQ-DAEMON-1",
2026-06-21T23:05:52.8396736Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T23:05:52.8396883Z       "requiredStages": [
2026-06-21T23:05:52.8397015Z         "impl",
2026-06-21T23:05:52.8397144Z         "unit",
2026-06-21T23:05:52.8397268Z         "int"
2026-06-21T23:05:52.8397396Z       ],
2026-06-21T23:05:52.8397535Z       "stages": {
2026-06-21T23:05:52.8397658Z         "doc": {
2026-06-21T23:05:52.8397793Z           "complete": false,
2026-06-21T23:05:52.8397931Z           "evidence": []
2026-06-21T23:05:52.8398056Z         },
2026-06-21T23:05:52.8398184Z         "impl": {
2026-06-21T23:05:52.8398331Z           "complete": true,
2026-06-21T23:05:52.8398474Z           "evidence": [
2026-06-21T23:05:52.8398608Z             {
2026-06-21T23:05:52.8398789Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8398927Z               "line": 229
2026-06-21T23:05:52.8399137Z             },
2026-06-21T23:05:52.8399256Z             {
2026-06-21T23:05:52.8399433Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:05:52.8399570Z               "line": 12
2026-06-21T23:05:52.8399698Z             },
2026-06-21T23:05:52.8399821Z             {
2026-06-21T23:05:52.8400006Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8400131Z               "line": 16
2026-06-21T23:05:52.8400268Z             },
2026-06-21T23:05:52.8400393Z             {
2026-06-21T23:05:52.8400574Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8400708Z               "line": 309
2026-06-21T23:05:52.8400845Z             },
2026-06-21T23:05:52.8400965Z             {
2026-06-21T23:05:52.8401141Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8401290Z               "line": 24
2026-06-21T23:05:52.8401417Z             },
2026-06-21T23:05:52.8401542Z             {
2026-06-21T23:05:52.8401718Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8401852Z               "line": 262
2026-06-21T23:05:52.8401986Z             },
2026-06-21T23:05:52.8402108Z             {
2026-06-21T23:05:52.8402289Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8402425Z               "line": 279
2026-06-21T23:05:52.8402549Z             },
2026-06-21T23:05:52.8402679Z             {
2026-06-21T23:05:52.8402855Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8402989Z               "line": 356
2026-06-21T23:05:52.8403112Z             },
2026-06-21T23:05:52.8403246Z             {
2026-06-21T23:05:52.8403412Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8403717Z               "line": 670
2026-06-21T23:05:52.8403847Z             },
2026-06-21T23:05:52.8404094Z             {
2026-06-21T23:05:52.8404275Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T23:05:52.8404409Z               "line": 15
2026-06-21T23:05:52.8404543Z             },
2026-06-21T23:05:52.8404671Z             {
2026-06-21T23:05:52.8404840Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.8404966Z               "line": 241
2026-06-21T23:05:52.8405094Z             },
2026-06-21T23:05:52.8405220Z             {
2026-06-21T23:05:52.8405380Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T23:05:52.8405510Z               "line": 13
2026-06-21T23:05:52.8405633Z             },
2026-06-21T23:05:52.8405768Z             {
2026-06-21T23:05:52.8405943Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.8406068Z               "line": 382
2026-06-21T23:05:52.8406215Z             },
2026-06-21T23:05:52.8406344Z             {
2026-06-21T23:05:52.8406515Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.8406654Z               "line": 494
2026-06-21T23:05:52.8406788Z             }
2026-06-21T23:05:52.8406921Z           ]
2026-06-21T23:05:52.8407046Z         },
2026-06-21T23:05:52.8407178Z         "int": {
2026-06-21T23:05:52.8407311Z           "complete": true,
2026-06-21T23:05:52.8407438Z           "evidence": [
2026-06-21T23:05:52.8407561Z             {
2026-06-21T23:05:52.8407791Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T23:05:52.8407928Z               "line": 2
2026-06-21T23:05:52.8408058Z             },
2026-06-21T23:05:52.8408181Z             {
2026-06-21T23:05:52.8408406Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T23:05:52.8408547Z               "line": 16
2026-06-21T23:05:52.8408673Z             },
2026-06-21T23:05:52.8408786Z             {
2026-06-21T23:05:52.8409063Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T23:05:52.8409191Z               "line": 12
2026-06-21T23:05:52.8409335Z             },
2026-06-21T23:05:52.8409445Z             {
2026-06-21T23:05:52.8409636Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T23:05:52.8409779Z               "line": 12
2026-06-21T23:05:52.8409894Z             },
2026-06-21T23:05:52.8410026Z             {
2026-06-21T23:05:52.8410211Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T23:05:52.8410343Z               "line": 44
2026-06-21T23:05:52.8410471Z             }
2026-06-21T23:05:52.8410601Z           ]
2026-06-21T23:05:52.8410733Z         },
2026-06-21T23:05:52.8410863Z         "unit": {
2026-06-21T23:05:52.8411006Z           "complete": true,
2026-06-21T23:05:52.8411139Z           "evidence": [
2026-06-21T23:05:52.8411268Z             {
2026-06-21T23:05:52.8411439Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:05:52.8411587Z               "line": 285
2026-06-21T23:05:52.8411716Z             },
2026-06-21T23:05:52.8411845Z             {
2026-06-21T23:05:52.8412026Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:05:52.8412170Z               "line": 293
2026-06-21T23:05:52.8412302Z             },
2026-06-21T23:05:52.8412422Z             {
2026-06-21T23:05:52.8412588Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:05:52.8412725Z               "line": 309
2026-06-21T23:05:52.8412849Z             },
2026-06-21T23:05:52.8412980Z             {
2026-06-21T23:05:52.8413143Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:05:52.8413277Z               "line": 317
2026-06-21T23:05:52.8413405Z             },
2026-06-21T23:05:52.8413534Z             {
2026-06-21T23:05:52.8413715Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8413853Z               "line": 659
2026-06-21T23:05:52.8413981Z             },
2026-06-21T23:05:52.8414211Z             {
2026-06-21T23:05:52.8414393Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8414626Z               "line": 729
2026-06-21T23:05:52.8414760Z             },
2026-06-21T23:05:52.8414893Z             {
2026-06-21T23:05:52.8415066Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8415213Z               "line": 1211
2026-06-21T23:05:52.8415338Z             },
2026-06-21T23:05:52.8415460Z             {
2026-06-21T23:05:52.8415640Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8415789Z               "line": 1248
2026-06-21T23:05:52.8415921Z             },
2026-06-21T23:05:52.8416046Z             {
2026-06-21T23:05:52.8416231Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8416371Z               "line": 1271
2026-06-21T23:05:52.8416498Z             },
2026-06-21T23:05:52.8416618Z             {
2026-06-21T23:05:52.8416794Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8416943Z               "line": 1300
2026-06-21T23:05:52.8417071Z             },
2026-06-21T23:05:52.8417209Z             {
2026-06-21T23:05:52.8417380Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8417515Z               "line": 1348
2026-06-21T23:05:52.8417644Z             },
2026-06-21T23:05:52.8417766Z             {
2026-06-21T23:05:52.8417943Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8418078Z               "line": 1391
2026-06-21T23:05:52.8418212Z             },
2026-06-21T23:05:52.8418323Z             {
2026-06-21T23:05:52.8418498Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T23:05:52.8418637Z               "line": 106
2026-06-21T23:05:52.8418765Z             },
2026-06-21T23:05:52.8418890Z             {
2026-06-21T23:05:52.8419152Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T23:05:52.8419295Z               "line": 132
2026-06-21T23:05:52.8419423Z             },
2026-06-21T23:05:52.8419543Z             {
2026-06-21T23:05:52.8419709Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.8419849Z               "line": 530
2026-06-21T23:05:52.8419976Z             }
2026-06-21T23:05:52.8420101Z           ]
2026-06-21T23:05:52.8420229Z         }
2026-06-21T23:05:52.8420353Z       }
2026-06-21T23:05:52.8420474Z     },
2026-06-21T23:05:52.8420595Z     {
2026-06-21T23:05:52.8420738Z       "id": "REQ-DAEMON-2",
2026-06-21T23:05:52.8420936Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T23:05:52.8421084Z       "requiredStages": [
2026-06-21T23:05:52.8421208Z         "impl",
2026-06-21T23:05:52.8421340Z         "unit",
2026-06-21T23:05:52.8421471Z         "int"
2026-06-21T23:05:52.8421598Z       ],
2026-06-21T23:05:52.8421723Z       "stages": {
2026-06-21T23:05:52.8421852Z         "doc": {
2026-06-21T23:05:52.8421984Z           "complete": true,
2026-06-21T23:05:52.8422119Z           "evidence": [
2026-06-21T23:05:52.8422252Z             {
2026-06-21T23:05:52.8422415Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T23:05:52.8422557Z               "line": 250
2026-06-21T23:05:52.8422677Z             }
2026-06-21T23:05:52.8422805Z           ]
2026-06-21T23:05:52.8422925Z         },
2026-06-21T23:05:52.8423054Z         "impl": {
2026-06-21T23:05:52.8423186Z           "complete": true,
2026-06-21T23:05:52.8423328Z           "evidence": [
2026-06-21T23:05:52.8423456Z             {
2026-06-21T23:05:52.8423622Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.8423761Z               "line": 23
2026-06-21T23:05:52.8423879Z             },
2026-06-21T23:05:52.8424009Z             {
2026-06-21T23:05:52.8424165Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.8424300Z               "line": 922
2026-06-21T23:05:52.8424428Z             },
2026-06-21T23:05:52.8424551Z             {
2026-06-21T23:05:52.8424724Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.8424958Z               "line": 963
2026-06-21T23:05:52.8425086Z             },
2026-06-21T23:05:52.8425210Z             {
2026-06-21T23:05:52.8425472Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.8425607Z               "line": 1199
2026-06-21T23:05:52.8425729Z             },
2026-06-21T23:05:52.8425854Z             {
2026-06-21T23:05:52.8426025Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8426162Z               "line": 32
2026-06-21T23:05:52.8426292Z             },
2026-06-21T23:05:52.8426419Z             {
2026-06-21T23:05:52.8426593Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8426730Z               "line": 1228
2026-06-21T23:05:52.8426859Z             },
2026-06-21T23:05:52.8426983Z             {
2026-06-21T23:05:52.8427159Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8427292Z               "line": 2064
2026-06-21T23:05:52.8427416Z             },
2026-06-21T23:05:52.8427546Z             {
2026-06-21T23:05:52.8427716Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8427861Z               "line": 2351
2026-06-21T23:05:52.8427988Z             },
2026-06-21T23:05:52.8428113Z             {
2026-06-21T23:05:52.8428274Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T23:05:52.8428411Z               "line": 11
2026-06-21T23:05:52.8428545Z             },
2026-06-21T23:05:52.8428667Z             {
2026-06-21T23:05:52.8428830Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8429015Z               "line": 153
2026-06-21T23:05:52.8429140Z             },
2026-06-21T23:05:52.8429272Z             {
2026-06-21T23:05:52.8429436Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8429578Z               "line": 343
2026-06-21T23:05:52.8429702Z             },
2026-06-21T23:05:52.8429826Z             {
2026-06-21T23:05:52.8429983Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.8430132Z               "line": 13
2026-06-21T23:05:52.8430264Z             },
2026-06-21T23:05:52.8430385Z             {
2026-06-21T23:05:52.8430565Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8430699Z               "line": 27
2026-06-21T23:05:52.8430822Z             },
2026-06-21T23:05:52.8430937Z             {
2026-06-21T23:05:52.8431109Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8431241Z               "line": 173
2026-06-21T23:05:52.8431370Z             },
2026-06-21T23:05:52.8431496Z             {
2026-06-21T23:05:52.8431663Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8431787Z               "line": 682
2026-06-21T23:05:52.8431915Z             },
2026-06-21T23:05:52.8432040Z             {
2026-06-21T23:05:52.8432206Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8432332Z               "line": 903
2026-06-21T23:05:52.8432459Z             },
2026-06-21T23:05:52.8432584Z             {
2026-06-21T23:05:52.8432755Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8432893Z               "line": 1050
2026-06-21T23:05:52.8433027Z             },
2026-06-21T23:05:52.8433155Z             {
2026-06-21T23:05:52.8433318Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8433456Z               "line": 1139
2026-06-21T23:05:52.8433581Z             },
2026-06-21T23:05:52.8433708Z             {
2026-06-21T23:05:52.8433865Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8434002Z               "line": 1261
2026-06-21T23:05:52.8434134Z             },
2026-06-21T23:05:52.8434258Z             {
2026-06-21T23:05:52.8434435Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T23:05:52.8434569Z               "line": 10
2026-06-21T23:05:52.8434688Z             }
2026-06-21T23:05:52.8434811Z           ]
2026-06-21T23:05:52.8434936Z         },
2026-06-21T23:05:52.8435059Z         "int": {
2026-06-21T23:05:52.8435308Z           "complete": true,
2026-06-21T23:05:52.8435441Z           "evidence": [
2026-06-21T23:05:52.8435660Z             {
2026-06-21T23:05:52.8435838Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:05:52.8435975Z               "line": 17
2026-06-21T23:05:52.8436104Z             },
2026-06-21T23:05:52.8436228Z             {
2026-06-21T23:05:52.8436410Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T23:05:52.8436548Z               "line": 90
2026-06-21T23:05:52.8436670Z             },
2026-06-21T23:05:52.8436794Z             {
2026-06-21T23:05:52.8436970Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T23:05:52.8437105Z               "line": 110
2026-06-21T23:05:52.8437234Z             },
2026-06-21T23:05:52.8437356Z             {
2026-06-21T23:05:52.8437533Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T23:05:52.8437661Z               "line": 186
2026-06-21T23:05:52.8437796Z             },
2026-06-21T23:05:52.8437924Z             {
2026-06-21T23:05:52.8438102Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T23:05:52.8438244Z               "line": 309
2026-06-21T23:05:52.8438364Z             },
2026-06-21T23:05:52.8438487Z             {
2026-06-21T23:05:52.8438654Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T23:05:52.8438793Z               "line": 128
2026-06-21T23:05:52.8438910Z             },
2026-06-21T23:05:52.8439110Z             {
2026-06-21T23:05:52.8439279Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T23:05:52.8439414Z               "line": 59
2026-06-21T23:05:52.8439541Z             }
2026-06-21T23:05:52.8439652Z           ]
2026-06-21T23:05:52.8439781Z         },
2026-06-21T23:05:52.8439909Z         "unit": {
2026-06-21T23:05:52.8440044Z           "complete": true,
2026-06-21T23:05:52.8440180Z           "evidence": [
2026-06-21T23:05:52.8440306Z             {
2026-06-21T23:05:52.8440481Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T23:05:52.8440620Z               "line": 62
2026-06-21T23:05:52.8440753Z             },
2026-06-21T23:05:52.8440882Z             {
2026-06-21T23:05:52.8441049Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T23:05:52.8441182Z               "line": 76
2026-06-21T23:05:52.8441307Z             },
2026-06-21T23:05:52.8441440Z             {
2026-06-21T23:05:52.8441598Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T23:05:52.8441739Z               "line": 88
2026-06-21T23:05:52.8441873Z             },
2026-06-21T23:05:52.8441991Z             {
2026-06-21T23:05:52.8442165Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:05:52.8442300Z               "line": 347
2026-06-21T23:05:52.8442447Z             },
2026-06-21T23:05:52.8442577Z             {
2026-06-21T23:05:52.8442747Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.8442882Z               "line": 901
2026-06-21T23:05:52.8443015Z             },
2026-06-21T23:05:52.8443144Z             {
2026-06-21T23:05:52.8443305Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.8443453Z               "line": 909
2026-06-21T23:05:52.8443578Z             },
2026-06-21T23:05:52.8443706Z             {
2026-06-21T23:05:52.8443879Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.8444011Z               "line": 926
2026-06-21T23:05:52.8444131Z             },
2026-06-21T23:05:52.8444254Z             {
2026-06-21T23:05:52.8444420Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.8444543Z               "line": 1035
2026-06-21T23:05:52.8444675Z             },
2026-06-21T23:05:52.8444809Z             {
2026-06-21T23:05:52.8444980Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8445129Z               "line": 1370
2026-06-21T23:05:52.8445248Z             },
2026-06-21T23:05:52.8445381Z             {
2026-06-21T23:05:52.8445548Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8445796Z               "line": 1382
2026-06-21T23:05:52.8446030Z             },
2026-06-21T23:05:52.8446144Z             {
2026-06-21T23:05:52.8446330Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T23:05:52.8446468Z               "line": 110
2026-06-21T23:05:52.8446597Z             },
2026-06-21T23:05:52.8446732Z             {
2026-06-21T23:05:52.8446902Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T23:05:52.8447042Z               "line": 145
2026-06-21T23:05:52.8447164Z             }
2026-06-21T23:05:52.8447292Z           ]
2026-06-21T23:05:52.8447422Z         }
2026-06-21T23:05:52.8447540Z       }
2026-06-21T23:05:52.8447660Z     },
2026-06-21T23:05:52.8447789Z     {
2026-06-21T23:05:52.8447931Z       "id": "REQ-DAEMON-3",
2026-06-21T23:05:52.8448137Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T23:05:52.8448279Z       "requiredStages": [
2026-06-21T23:05:52.8448422Z         "impl",
2026-06-21T23:05:52.8448565Z         "unit",
2026-06-21T23:05:52.8448690Z         "int"
2026-06-21T23:05:52.8448823Z       ],
2026-06-21T23:05:52.8449071Z       "stages": {
2026-06-21T23:05:52.8449200Z         "doc": {
2026-06-21T23:05:52.8449343Z           "complete": false,
2026-06-21T23:05:52.8449485Z           "evidence": []
2026-06-21T23:05:52.8449613Z         },
2026-06-21T23:05:52.8449735Z         "impl": {
2026-06-21T23:05:52.8449878Z           "complete": true,
2026-06-21T23:05:52.8450022Z           "evidence": [
2026-06-21T23:05:52.8450145Z             {
2026-06-21T23:05:52.8450322Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8450450Z               "line": 14
2026-06-21T23:05:52.8450585Z             },
2026-06-21T23:05:52.8450708Z             {
2026-06-21T23:05:52.8450885Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T23:05:52.8451027Z               "line": 11
2026-06-21T23:05:52.8451151Z             },
2026-06-21T23:05:52.8451280Z             {
2026-06-21T23:05:52.8451437Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:52.8451581Z               "line": 305
2026-06-21T23:05:52.8451713Z             },
2026-06-21T23:05:52.8451829Z             {
2026-06-21T23:05:52.8451990Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8452125Z               "line": 1956
2026-06-21T23:05:52.8452258Z             },
2026-06-21T23:05:52.8452380Z             {
2026-06-21T23:05:52.8452542Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8452683Z               "line": 4235
2026-06-21T23:05:52.8452812Z             },
2026-06-21T23:05:52.8452936Z             {
2026-06-21T23:05:52.8453089Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8453237Z               "line": 4256
2026-06-21T23:05:52.8453365Z             }
2026-06-21T23:05:52.8453499Z           ]
2026-06-21T23:05:52.8453631Z         },
2026-06-21T23:05:52.8453757Z         "int": {
2026-06-21T23:05:52.8453913Z           "complete": true,
2026-06-21T23:05:52.8454043Z           "evidence": [
2026-06-21T23:05:52.8454171Z             {
2026-06-21T23:05:52.8454353Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:05:52.8454481Z               "line": 49
2026-06-21T23:05:52.8454610Z             },
2026-06-21T23:05:52.8454735Z             {
2026-06-21T23:05:52.8454900Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:05:52.8455033Z               "line": 487
2026-06-21T23:05:52.8455159Z             }
2026-06-21T23:05:52.8455278Z           ]
2026-06-21T23:05:52.8455403Z         },
2026-06-21T23:05:52.8455526Z         "unit": {
2026-06-21T23:05:52.8455665Z           "complete": true,
2026-06-21T23:05:52.8455803Z           "evidence": [
2026-06-21T23:05:52.8455941Z             {
2026-06-21T23:05:52.8456118Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8456256Z               "line": 1553
2026-06-21T23:05:52.8456390Z             },
2026-06-21T23:05:52.8456624Z             {
2026-06-21T23:05:52.8456781Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8457014Z               "line": 10715
2026-06-21T23:05:52.8457162Z             }
2026-06-21T23:05:52.8457283Z           ]
2026-06-21T23:05:52.8457409Z         }
2026-06-21T23:05:52.8457540Z       }
2026-06-21T23:05:52.8457663Z     },
2026-06-21T23:05:52.8457786Z     {
2026-06-21T23:05:52.8457934Z       "id": "REQ-DAEMON-4",
2026-06-21T23:05:52.8458105Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T23:05:52.8458253Z       "requiredStages": [
2026-06-21T23:05:52.8458377Z         "impl",
2026-06-21T23:05:52.8458506Z         "unit",
2026-06-21T23:05:52.8458635Z         "int"
2026-06-21T23:05:52.8458763Z       ],
2026-06-21T23:05:52.8458893Z       "stages": {
2026-06-21T23:05:52.8459096Z         "doc": {
2026-06-21T23:05:52.8459236Z           "complete": false,
2026-06-21T23:05:52.8459364Z           "evidence": []
2026-06-21T23:05:52.8459494Z         },
2026-06-21T23:05:52.8459635Z         "impl": {
2026-06-21T23:05:52.8459760Z           "complete": true,
2026-06-21T23:05:52.8459894Z           "evidence": [
2026-06-21T23:05:52.8460025Z             {
2026-06-21T23:05:52.8460197Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8460338Z               "line": 464
2026-06-21T23:05:52.8460462Z             },
2026-06-21T23:05:52.8460596Z             {
2026-06-21T23:05:52.8460772Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8460906Z               "line": 529
2026-06-21T23:05:52.8461034Z             },
2026-06-21T23:05:52.8461159Z             {
2026-06-21T23:05:52.8461329Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8461469Z               "line": 551
2026-06-21T23:05:52.8461602Z             }
2026-06-21T23:05:52.8461731Z           ]
2026-06-21T23:05:52.8461859Z         },
2026-06-21T23:05:52.8461987Z         "int": {
2026-06-21T23:05:52.8462132Z           "complete": true,
2026-06-21T23:05:52.8462274Z           "evidence": [
2026-06-21T23:05:52.8462409Z             {
2026-06-21T23:05:52.8462598Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T23:05:52.8462733Z               "line": 42
2026-06-21T23:05:52.8462864Z             }
2026-06-21T23:05:52.8462988Z           ]
2026-06-21T23:05:52.8463116Z         },
2026-06-21T23:05:52.8463238Z         "unit": {
2026-06-21T23:05:52.8463377Z           "complete": true,
2026-06-21T23:05:52.8463506Z           "evidence": [
2026-06-21T23:05:52.8463639Z             {
2026-06-21T23:05:52.8463816Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:05:52.8463944Z               "line": 428
2026-06-21T23:05:52.8464078Z             },
2026-06-21T23:05:52.8464196Z             {
2026-06-21T23:05:52.8464374Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8464516Z               "line": 957
2026-06-21T23:05:52.8464641Z             },
2026-06-21T23:05:52.8464768Z             {
2026-06-21T23:05:52.8464942Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8465074Z               "line": 1027
2026-06-21T23:05:52.8465213Z             },
2026-06-21T23:05:52.8465347Z             {
2026-06-21T23:05:52.8465521Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8465650Z               "line": 1057
2026-06-21T23:05:52.8465777Z             },
2026-06-21T23:05:52.8465915Z             {
2026-06-21T23:05:52.8466091Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8466230Z               "line": 1090
2026-06-21T23:05:52.8466354Z             }
2026-06-21T23:05:52.8466491Z           ]
2026-06-21T23:05:52.8466607Z         }
2026-06-21T23:05:52.8466734Z       }
2026-06-21T23:05:52.8466860Z     },
2026-06-21T23:05:52.8466992Z     {
2026-06-21T23:05:52.8467130Z       "id": "REQ-DAEMON-5",
2026-06-21T23:05:52.8468580Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T23:05:52.8469056Z       "requiredStages": [
2026-06-21T23:05:52.8469185Z         "impl",
2026-06-21T23:05:52.8469309Z         "unit"
2026-06-21T23:05:52.8469424Z       ],
2026-06-21T23:05:52.8469562Z       "stages": {
2026-06-21T23:05:52.8469695Z         "doc": {
2026-06-21T23:05:52.8469838Z           "complete": false,
2026-06-21T23:05:52.8469977Z           "evidence": []
2026-06-21T23:05:52.8470097Z         },
2026-06-21T23:05:52.8470229Z         "impl": {
2026-06-21T23:05:52.8470368Z           "complete": true,
2026-06-21T23:05:52.8470500Z           "evidence": [
2026-06-21T23:05:52.8470633Z             {
2026-06-21T23:05:52.8470809Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8470964Z               "line": 476
2026-06-21T23:05:52.8471095Z             },
2026-06-21T23:05:52.8471232Z             {
2026-06-21T23:05:52.8471409Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8471556Z               "line": 769
2026-06-21T23:05:52.8471686Z             },
2026-06-21T23:05:52.8471814Z             {
2026-06-21T23:05:52.8471991Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8472119Z               "line": 782
2026-06-21T23:05:52.8472248Z             },
2026-06-21T23:05:52.8472367Z             {
2026-06-21T23:05:52.8472538Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8472673Z               "line": 800
2026-06-21T23:05:52.8472801Z             },
2026-06-21T23:05:52.8472931Z             {
2026-06-21T23:05:52.8473101Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8473235Z               "line": 841
2026-06-21T23:05:52.8473364Z             }
2026-06-21T23:05:52.8473491Z           ]
2026-06-21T23:05:52.8473615Z         },
2026-06-21T23:05:52.8473742Z         "int": {
2026-06-21T23:05:52.8473894Z           "complete": false,
2026-06-21T23:05:52.8474033Z           "evidence": []
2026-06-21T23:05:52.8474166Z         },
2026-06-21T23:05:52.8474300Z         "unit": {
2026-06-21T23:05:52.8474432Z           "complete": true,
2026-06-21T23:05:52.8474567Z           "evidence": [
2026-06-21T23:05:52.8474696Z             {
2026-06-21T23:05:52.8474877Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8475010Z               "line": 1189
2026-06-21T23:05:52.8475143Z             },
2026-06-21T23:05:52.8475277Z             {
2026-06-21T23:05:52.8475439Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8475588Z               "line": 1213
2026-06-21T23:05:52.8475715Z             },
2026-06-21T23:05:52.8475836Z             {
2026-06-21T23:05:52.8476010Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.8476153Z               "line": 1239
2026-06-21T23:05:52.8476290Z             }
2026-06-21T23:05:52.8476422Z           ]
2026-06-21T23:05:52.8476552Z         }
2026-06-21T23:05:52.8476675Z       }
2026-06-21T23:05:52.8476805Z     },
2026-06-21T23:05:52.8476929Z     {
2026-06-21T23:05:52.8477076Z       "id": "REQ-DAEMON-6",
2026-06-21T23:05:52.8479235Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T23:05:52.8479511Z       "requiredStages": [
2026-06-21T23:05:52.8479645Z         "impl",
2026-06-21T23:05:52.8479878Z         "unit"
2026-06-21T23:05:52.8480008Z       ],
2026-06-21T23:05:52.8480136Z       "stages": {
2026-06-21T23:05:52.8480265Z         "doc": {
2026-06-21T23:05:52.8480417Z           "complete": false,
2026-06-21T23:05:52.8480556Z           "evidence": []
2026-06-21T23:05:52.8480685Z         },
2026-06-21T23:05:52.8480822Z         "impl": {
2026-06-21T23:05:52.8480963Z           "complete": true,
2026-06-21T23:05:52.8481099Z           "evidence": [
2026-06-21T23:05:52.8481222Z             {
2026-06-21T23:05:52.8481397Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8481529Z               "line": 495
2026-06-21T23:05:52.8481655Z             },
2026-06-21T23:05:52.8481782Z             {
2026-06-21T23:05:52.8481955Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8482102Z               "line": 526
2026-06-21T23:05:52.8482237Z             },
2026-06-21T23:05:52.8482364Z             {
2026-06-21T23:05:52.8482537Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:05:52.8482684Z               "line": 55
2026-06-21T23:05:52.8482812Z             },
2026-06-21T23:05:52.8482937Z             {
2026-06-21T23:05:52.8483108Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:05:52.8483242Z               "line": 70
2026-06-21T23:05:52.8483366Z             },
2026-06-21T23:05:52.8483481Z             {
2026-06-21T23:05:52.8483647Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8483791Z               "line": 2020
2026-06-21T23:05:52.8483910Z             },
2026-06-21T23:05:52.8484046Z             {
2026-06-21T23:05:52.8484199Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8484344Z               "line": 2046
2026-06-21T23:05:52.8484464Z             }
2026-06-21T23:05:52.8484598Z           ]
2026-06-21T23:05:52.8484721Z         },
2026-06-21T23:05:52.8484851Z         "int": {
2026-06-21T23:05:52.8484993Z           "complete": false,
2026-06-21T23:05:52.8485127Z           "evidence": []
2026-06-21T23:05:52.8485270Z         },
2026-06-21T23:05:52.8485398Z         "unit": {
2026-06-21T23:05:52.8485546Z           "complete": true,
2026-06-21T23:05:52.8485675Z           "evidence": [
2026-06-21T23:05:52.8485795Z             {
2026-06-21T23:05:52.8485989Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:05:52.8486129Z               "line": 288
2026-06-21T23:05:52.8486262Z             },
2026-06-21T23:05:52.8486387Z             {
2026-06-21T23:05:52.8486556Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:05:52.8486699Z               "line": 299
2026-06-21T23:05:52.8486822Z             },
2026-06-21T23:05:52.8486954Z             {
2026-06-21T23:05:52.8487122Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:05:52.8487254Z               "line": 325
2026-06-21T23:05:52.8487384Z             },
2026-06-21T23:05:52.8487522Z             {
2026-06-21T23:05:52.8487704Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:05:52.8487841Z               "line": 351
2026-06-21T23:05:52.8487971Z             }
2026-06-21T23:05:52.8488089Z           ]
2026-06-21T23:05:52.8488217Z         }
2026-06-21T23:05:52.8488343Z       }
2026-06-21T23:05:52.8488476Z     },
2026-06-21T23:05:52.8488605Z     {
2026-06-21T23:05:52.8488742Z       "id": "REQ-DAEMON-7",
2026-06-21T23:05:52.8490305Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T23:05:52.8490467Z       "requiredStages": [
2026-06-21T23:05:52.8490715Z         "impl",
2026-06-21T23:05:52.8490845Z         "unit"
2026-06-21T23:05:52.8491063Z       ],
2026-06-21T23:05:52.8494041Z       "stages": {
2026-06-21T23:05:52.8494207Z         "doc": {
2026-06-21T23:05:52.8494361Z           "complete": false,
2026-06-21T23:05:52.8494498Z           "evidence": []
2026-06-21T23:05:52.8494630Z         },
2026-06-21T23:05:52.8494768Z         "impl": {
2026-06-21T23:05:52.8494905Z           "complete": true,
2026-06-21T23:05:52.8495048Z           "evidence": [
2026-06-21T23:05:52.8495176Z             {
2026-06-21T23:05:52.8495363Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8495505Z               "line": 545
2026-06-21T23:05:52.8495625Z             },
2026-06-21T23:05:52.8495744Z             {
2026-06-21T23:05:52.8495920Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.8496064Z               "line": 610
2026-06-21T23:05:52.8496192Z             },
2026-06-21T23:05:52.8496341Z             {
2026-06-21T23:05:52.8496516Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:05:52.8496646Z               "line": 89
2026-06-21T23:05:52.8496778Z             },
2026-06-21T23:05:52.8496908Z             {
2026-06-21T23:05:52.8497069Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8497206Z               "line": 1957
2026-06-21T23:05:52.8497330Z             }
2026-06-21T23:05:52.8497457Z           ]
2026-06-21T23:05:52.8497586Z         },
2026-06-21T23:05:52.8497715Z         "int": {
2026-06-21T23:05:52.8497853Z           "complete": false,
2026-06-21T23:05:52.8497978Z           "evidence": []
2026-06-21T23:05:52.8498101Z         },
2026-06-21T23:05:52.8498226Z         "unit": {
2026-06-21T23:05:52.8498373Z           "complete": true,
2026-06-21T23:05:52.8498511Z           "evidence": [
2026-06-21T23:05:52.8498640Z             {
2026-06-21T23:05:52.8498811Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:05:52.8499045Z               "line": 314
2026-06-21T23:05:52.8499180Z             },
2026-06-21T23:05:52.8499312Z             {
2026-06-21T23:05:52.8499490Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8499617Z               "line": 8102
2026-06-21T23:05:52.8499751Z             }
2026-06-21T23:05:52.8499881Z           ]
2026-06-21T23:05:52.8500007Z         }
2026-06-21T23:05:52.8500131Z       }
2026-06-21T23:05:52.8500261Z     },
2026-06-21T23:05:52.8500379Z     {
2026-06-21T23:05:52.8500518Z       "id": "REQ-DAEMON-8",
2026-06-21T23:05:52.8501571Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T23:05:52.8501710Z       "requiredStages": [
2026-06-21T23:05:52.8501843Z         "impl",
2026-06-21T23:05:52.8501976Z         "unit"
2026-06-21T23:05:52.8502111Z       ],
2026-06-21T23:05:52.8502247Z       "stages": {
2026-06-21T23:05:52.8502367Z         "doc": {
2026-06-21T23:05:52.8502522Z           "complete": false,
2026-06-21T23:05:52.8502654Z           "evidence": []
2026-06-21T23:05:52.8502779Z         },
2026-06-21T23:05:52.8502907Z         "impl": {
2026-06-21T23:05:52.8503056Z           "complete": true,
2026-06-21T23:05:52.8503184Z           "evidence": [
2026-06-21T23:05:52.8503308Z             {
2026-06-21T23:05:52.8503481Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8503613Z               "line": 445
2026-06-21T23:05:52.8503738Z             },
2026-06-21T23:05:52.8503870Z             {
2026-06-21T23:05:52.8504034Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:05:52.8504171Z               "line": 56
2026-06-21T23:05:52.8504291Z             }
2026-06-21T23:05:52.8504428Z           ]
2026-06-21T23:05:52.8504548Z         },
2026-06-21T23:05:52.8504687Z         "int": {
2026-06-21T23:05:52.8504983Z           "complete": false,
2026-06-21T23:05:52.8505119Z           "evidence": []
2026-06-21T23:05:52.8505347Z         },
2026-06-21T23:05:52.8505465Z         "unit": {
2026-06-21T23:05:52.8505603Z           "complete": true,
2026-06-21T23:05:52.8505732Z           "evidence": [
2026-06-21T23:05:52.8505865Z             {
2026-06-21T23:05:52.8506056Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:05:52.8506199Z               "line": 288
2026-06-21T23:05:52.8506323Z             },
2026-06-21T23:05:52.8506447Z             {
2026-06-21T23:05:52.8506624Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:05:52.8506762Z               "line": 325
2026-06-21T23:05:52.8506887Z             }
2026-06-21T23:05:52.8507014Z           ]
2026-06-21T23:05:52.8507139Z         }
2026-06-21T23:05:52.8507268Z       }
2026-06-21T23:05:52.8507387Z     },
2026-06-21T23:05:52.8507507Z     {
2026-06-21T23:05:52.8507639Z       "id": "REQ-DAEMON-9",
2026-06-21T23:05:52.8510088Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T23:05:52.8510268Z       "requiredStages": [
2026-06-21T23:05:52.8510393Z         "impl",
2026-06-21T23:05:52.8510525Z         "unit"
2026-06-21T23:05:52.8510653Z       ],
2026-06-21T23:05:52.8510783Z       "stages": {
2026-06-21T23:05:52.8510910Z         "doc": {
2026-06-21T23:05:52.8511049Z           "complete": false,
2026-06-21T23:05:52.8511192Z           "evidence": []
2026-06-21T23:05:52.8511326Z         },
2026-06-21T23:05:52.8511450Z         "impl": {
2026-06-21T23:05:52.8511587Z           "complete": true,
2026-06-21T23:05:52.8511717Z           "evidence": [
2026-06-21T23:05:52.8511845Z             {
2026-06-21T23:05:52.8512018Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8512151Z               "line": 276
2026-06-21T23:05:52.8512275Z             },
2026-06-21T23:05:52.8512404Z             {
2026-06-21T23:05:52.8512580Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8512709Z               "line": 1279
2026-06-21T23:05:52.8512831Z             },
2026-06-21T23:05:52.8512960Z             {
2026-06-21T23:05:52.8513129Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8513263Z               "line": 197
2026-06-21T23:05:52.8513393Z             },
2026-06-21T23:05:52.8513520Z             {
2026-06-21T23:05:52.8513692Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8513835Z               "line": 344
2026-06-21T23:05:52.8513969Z             },
2026-06-21T23:05:52.8514092Z             {
2026-06-21T23:05:52.8514260Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8514388Z               "line": 381
2026-06-21T23:05:52.8514512Z             },
2026-06-21T23:05:52.8514641Z             {
2026-06-21T23:05:52.8514798Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8514942Z               "line": 2075
2026-06-21T23:05:52.8515060Z             }
2026-06-21T23:05:52.8515190Z           ]
2026-06-21T23:05:52.8515317Z         },
2026-06-21T23:05:52.8515447Z         "int": {
2026-06-21T23:05:52.8515590Z           "complete": false,
2026-06-21T23:05:52.8515732Z           "evidence": []
2026-06-21T23:05:52.8515865Z         },
2026-06-21T23:05:52.8516096Z         "unit": {
2026-06-21T23:05:52.8516245Z           "complete": true,
2026-06-21T23:05:52.8516368Z           "evidence": [
2026-06-21T23:05:52.8516588Z             {
2026-06-21T23:05:52.8516760Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8516903Z               "line": 1158
2026-06-21T23:05:52.8517035Z             },
2026-06-21T23:05:52.8517161Z             {
2026-06-21T23:05:52.8517312Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8517447Z               "line": 10580
2026-06-21T23:05:52.8517579Z             }
2026-06-21T23:05:52.8517704Z           ]
2026-06-21T23:05:52.8517823Z         }
2026-06-21T23:05:52.8517951Z       }
2026-06-21T23:05:52.8518072Z     },
2026-06-21T23:05:52.8518199Z     {
2026-06-21T23:05:52.8518326Z       "id": "REQ-DOCS-1",
2026-06-21T23:05:52.8518582Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T23:05:52.8518716Z       "requiredStages": [
2026-06-21T23:05:52.8518854Z         "doc",
2026-06-21T23:05:52.8519079Z         "impl"
2026-06-21T23:05:52.8519202Z       ],
2026-06-21T23:05:52.8519336Z       "stages": {
2026-06-21T23:05:52.8519450Z         "doc": {
2026-06-21T23:05:52.8519592Z           "complete": true,
2026-06-21T23:05:52.8519722Z           "evidence": [
2026-06-21T23:05:52.8519850Z             {
2026-06-21T23:05:52.8520018Z               "path": "docs-site/src/index.md",
2026-06-21T23:05:52.8520156Z               "line": 50
2026-06-21T23:05:52.8520290Z             }
2026-06-21T23:05:52.8520413Z           ]
2026-06-21T23:05:52.8520542Z         },
2026-06-21T23:05:52.8520667Z         "impl": {
2026-06-21T23:05:52.8520809Z           "complete": true,
2026-06-21T23:05:52.8520939Z           "evidence": [
2026-06-21T23:05:52.8521061Z             {
2026-06-21T23:05:52.8521241Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T23:05:52.8521372Z               "line": 12
2026-06-21T23:05:52.8521494Z             },
2026-06-21T23:05:52.8521605Z             {
2026-06-21T23:05:52.8521781Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:52.8521920Z               "line": 14
2026-06-21T23:05:52.8522053Z             }
2026-06-21T23:05:52.8522181Z           ]
2026-06-21T23:05:52.8522296Z         },
2026-06-21T23:05:52.8522429Z         "int": {
2026-06-21T23:05:52.8522573Z           "complete": false,
2026-06-21T23:05:52.8522701Z           "evidence": []
2026-06-21T23:05:52.8522830Z         },
2026-06-21T23:05:52.8522954Z         "unit": {
2026-06-21T23:05:52.8523096Z           "complete": false,
2026-06-21T23:05:52.8523217Z           "evidence": []
2026-06-21T23:05:52.8523349Z         }
2026-06-21T23:05:52.8523472Z       }
2026-06-21T23:05:52.8523596Z     },
2026-06-21T23:05:52.8523723Z     {
2026-06-21T23:05:52.8523851Z       "id": "REQ-DOCS-2",
2026-06-21T23:05:52.8524056Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T23:05:52.8524201Z       "requiredStages": [
2026-06-21T23:05:52.8524328Z         "doc",
2026-06-21T23:05:52.8524448Z         "int"
2026-06-21T23:05:52.8524571Z       ],
2026-06-21T23:05:52.8524700Z       "stages": {
2026-06-21T23:05:52.8524835Z         "doc": {
2026-06-21T23:05:52.8524967Z           "complete": true,
2026-06-21T23:05:52.8525102Z           "evidence": [
2026-06-21T23:05:52.8525229Z             {
2026-06-21T23:05:52.8525455Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T23:05:52.8525592Z               "line": 3
2026-06-21T23:05:52.8525717Z             },
2026-06-21T23:05:52.8525840Z             {
2026-06-21T23:05:52.8526027Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T23:05:52.8526160Z               "line": 3
2026-06-21T23:05:52.8526292Z             },
2026-06-21T23:05:52.8526411Z             {
2026-06-21T23:05:52.8526599Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T23:05:52.8526743Z               "line": 3
2026-06-21T23:05:52.8526866Z             }
2026-06-21T23:05:52.8526995Z           ]
2026-06-21T23:05:52.8527223Z         },
2026-06-21T23:05:52.8527354Z         "impl": {
2026-06-21T23:05:52.8527496Z           "complete": false,
2026-06-21T23:05:52.8527735Z           "evidence": []
2026-06-21T23:05:52.8527863Z         },
2026-06-21T23:05:52.8527988Z         "int": {
2026-06-21T23:05:52.8528125Z           "complete": true,
2026-06-21T23:05:52.8528259Z           "evidence": [
2026-06-21T23:05:52.8528388Z             {
2026-06-21T23:05:52.8528555Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T23:05:52.8528689Z               "line": 14
2026-06-21T23:05:52.8528821Z             }
2026-06-21T23:05:52.8529011Z           ]
2026-06-21T23:05:52.8529142Z         },
2026-06-21T23:05:52.8529271Z         "unit": {
2026-06-21T23:05:52.8529419Z           "complete": false,
2026-06-21T23:05:52.8529562Z           "evidence": []
2026-06-21T23:05:52.8529691Z         }
2026-06-21T23:05:52.8529819Z       }
2026-06-21T23:05:52.8529940Z     },
2026-06-21T23:05:52.8530067Z     {
2026-06-21T23:05:52.8530206Z       "id": "REQ-DOCS-3",
2026-06-21T23:05:52.8530477Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T23:05:52.8530625Z       "requiredStages": [
2026-06-21T23:05:52.8530749Z         "doc"
2026-06-21T23:05:52.8530870Z       ],
2026-06-21T23:05:52.8530992Z       "stages": {
2026-06-21T23:05:52.8531126Z         "doc": {
2026-06-21T23:05:52.8531264Z           "complete": true,
2026-06-21T23:05:52.8531407Z           "evidence": [
2026-06-21T23:05:52.8531523Z             {
2026-06-21T23:05:52.8531693Z               "path": "docs-site/src/index.md",
2026-06-21T23:05:52.8531826Z               "line": 42
2026-06-21T23:05:52.8531950Z             }
2026-06-21T23:05:52.8532078Z           ]
2026-06-21T23:05:52.8532198Z         },
2026-06-21T23:05:52.8532331Z         "impl": {
2026-06-21T23:05:52.8532461Z           "complete": false,
2026-06-21T23:05:52.8532594Z           "evidence": []
2026-06-21T23:05:52.8532722Z         },
2026-06-21T23:05:52.8532837Z         "int": {
2026-06-21T23:05:52.8532984Z           "complete": false,
2026-06-21T23:05:52.8533115Z           "evidence": []
2026-06-21T23:05:52.8533251Z         },
2026-06-21T23:05:52.8533381Z         "unit": {
2026-06-21T23:05:52.8533519Z           "complete": false,
2026-06-21T23:05:52.8533652Z           "evidence": []
2026-06-21T23:05:52.8533777Z         }
2026-06-21T23:05:52.8533900Z       }
2026-06-21T23:05:52.8534023Z     },
2026-06-21T23:05:52.8534146Z     {
2026-06-21T23:05:52.8534278Z       "id": "REQ-DOCS-4",
2026-06-21T23:05:52.8534531Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T23:05:52.8534678Z       "requiredStages": [
2026-06-21T23:05:52.8534803Z         "doc",
2026-06-21T23:05:52.8534940Z         "impl",
2026-06-21T23:05:52.8535056Z         "unit"
2026-06-21T23:05:52.8535184Z       ],
2026-06-21T23:05:52.8535313Z       "stages": {
2026-06-21T23:05:52.8535442Z         "doc": {
2026-06-21T23:05:52.8535584Z           "complete": true,
2026-06-21T23:05:52.8535724Z           "evidence": [
2026-06-21T23:05:52.8535857Z             {
2026-06-21T23:05:52.8536019Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T23:05:52.8536167Z               "line": 35
2026-06-21T23:05:52.8536292Z             }
2026-06-21T23:05:52.8536419Z           ]
2026-06-21T23:05:52.8536533Z         },
2026-06-21T23:05:52.8536654Z         "impl": {
2026-06-21T23:05:52.8536799Z           "complete": true,
2026-06-21T23:05:52.8536933Z           "evidence": [
2026-06-21T23:05:52.8537065Z             {
2026-06-21T23:05:52.8537246Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:52.8537380Z               "line": 746
2026-06-21T23:05:52.8537507Z             },
2026-06-21T23:05:52.8537637Z             {
2026-06-21T23:05:52.8537798Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:52.8537923Z               "line": 15
2026-06-21T23:05:52.8538052Z             }
2026-06-21T23:05:52.8538170Z           ]
2026-06-21T23:05:52.8538300Z         },
2026-06-21T23:05:52.8538548Z         "int": {
2026-06-21T23:05:52.8538680Z           "complete": false,
2026-06-21T23:05:52.8538911Z           "evidence": []
2026-06-21T23:05:52.8539129Z         },
2026-06-21T23:05:52.8539249Z         "unit": {
2026-06-21T23:05:52.8539381Z           "complete": true,
2026-06-21T23:05:52.8539523Z           "evidence": [
2026-06-21T23:05:52.8539650Z             {
2026-06-21T23:05:52.8539836Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:52.8539984Z               "line": 1682
2026-06-21T23:05:52.8540108Z             }
2026-06-21T23:05:52.8540232Z           ]
2026-06-21T23:05:52.8540350Z         }
2026-06-21T23:05:52.8540481Z       }
2026-06-21T23:05:52.8540604Z     },
2026-06-21T23:05:52.8540722Z     {
2026-06-21T23:05:52.8540852Z       "id": "REQ-DOCS-5",
2026-06-21T23:05:52.8541105Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T23:05:52.8541253Z       "requiredStages": [
2026-06-21T23:05:52.8541376Z         "impl",
2026-06-21T23:05:52.8541514Z         "int"
2026-06-21T23:05:52.8541633Z       ],
2026-06-21T23:05:52.8541764Z       "stages": {
2026-06-21T23:05:52.8541895Z         "doc": {
2026-06-21T23:05:52.8542036Z           "complete": false,
2026-06-21T23:05:52.8542168Z           "evidence": []
2026-06-21T23:05:52.8542290Z         },
2026-06-21T23:05:52.8542425Z         "impl": {
2026-06-21T23:05:52.8542548Z           "complete": true,
2026-06-21T23:05:52.8542686Z           "evidence": [
2026-06-21T23:05:52.8542811Z             {
2026-06-21T23:05:52.8542987Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:52.8543125Z               "line": 747
2026-06-21T23:05:52.8543254Z             },
2026-06-21T23:05:52.8543383Z             {
2026-06-21T23:05:52.8543539Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:52.8543680Z               "line": 113
2026-06-21T23:05:52.8543807Z             }
2026-06-21T23:05:52.8543936Z           ]
2026-06-21T23:05:52.8544060Z         },
2026-06-21T23:05:52.8544193Z         "int": {
2026-06-21T23:05:52.8544338Z           "complete": true,
2026-06-21T23:05:52.8544465Z           "evidence": [
2026-06-21T23:05:52.8544597Z             {
2026-06-21T23:05:52.8544758Z               "path": ".github/workflows/ci.yml",
2026-06-21T23:05:52.8544885Z               "line": 211
2026-06-21T23:05:52.8545016Z             },
2026-06-21T23:05:52.8545139Z             {
2026-06-21T23:05:52.8545306Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:52.8545448Z               "line": 1719
2026-06-21T23:05:52.8545563Z             }
2026-06-21T23:05:52.8545692Z           ]
2026-06-21T23:05:52.8545810Z         },
2026-06-21T23:05:52.8545940Z         "unit": {
2026-06-21T23:05:52.8546083Z           "complete": false,
2026-06-21T23:05:52.8546222Z           "evidence": []
2026-06-21T23:05:52.8546340Z         }
2026-06-21T23:05:52.8546454Z       }
2026-06-21T23:05:52.8546565Z     },
2026-06-21T23:05:52.8546683Z     {
2026-06-21T23:05:52.8546822Z       "id": "REQ-DOCS-6",
2026-06-21T23:05:52.8547233Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T23:05:52.8547383Z       "requiredStages": [
2026-06-21T23:05:52.8547513Z         "impl",
2026-06-21T23:05:52.8547639Z         "unit",
2026-06-21T23:05:52.8547767Z         "int"
2026-06-21T23:05:52.8547888Z       ],
2026-06-21T23:05:52.8548011Z       "stages": {
2026-06-21T23:05:52.8548130Z         "doc": {
2026-06-21T23:05:52.8548278Z           "complete": true,
2026-06-21T23:05:52.8548416Z           "evidence": [
2026-06-21T23:05:52.8548536Z             {
2026-06-21T23:05:52.8548731Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T23:05:52.8548865Z               "line": 4
2026-06-21T23:05:52.8549050Z             }
2026-06-21T23:05:52.8549165Z           ]
2026-06-21T23:05:52.8549293Z         },
2026-06-21T23:05:52.8549432Z         "impl": {
2026-06-21T23:05:52.8549569Z           "complete": true,
2026-06-21T23:05:52.8549824Z           "evidence": [
2026-06-21T23:05:52.8549945Z             {
2026-06-21T23:05:52.8550201Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8550338Z               "line": 5240
2026-06-21T23:05:52.8550473Z             }
2026-06-21T23:05:52.8550596Z           ]
2026-06-21T23:05:52.8550711Z         },
2026-06-21T23:05:52.8550845Z         "int": {
2026-06-21T23:05:52.8550977Z           "complete": true,
2026-06-21T23:05:52.8551112Z           "evidence": [
2026-06-21T23:05:52.8551230Z             {
2026-06-21T23:05:52.8551403Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T23:05:52.8551545Z               "line": 39
2026-06-21T23:05:52.8551665Z             }
2026-06-21T23:05:52.8551793Z           ]
2026-06-21T23:05:52.8551917Z         },
2026-06-21T23:05:52.8552056Z         "unit": {
2026-06-21T23:05:52.8552193Z           "complete": true,
2026-06-21T23:05:52.8552324Z           "evidence": [
2026-06-21T23:05:52.8552455Z             {
2026-06-21T23:05:52.8552615Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8552747Z               "line": 10742
2026-06-21T23:05:52.8552869Z             }
2026-06-21T23:05:52.8552994Z           ]
2026-06-21T23:05:52.8553118Z         }
2026-06-21T23:05:52.8553247Z       }
2026-06-21T23:05:52.8553366Z     },
2026-06-21T23:05:52.8553494Z     {
2026-06-21T23:05:52.8553638Z       "id": "REQ-ELEVATE-1",
2026-06-21T23:05:52.8556801Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T23:05:52.8556986Z       "requiredStages": [
2026-06-21T23:05:52.8557126Z         "doc",
2026-06-21T23:05:52.8557253Z         "impl",
2026-06-21T23:05:52.8557388Z         "unit"
2026-06-21T23:05:52.8557506Z       ],
2026-06-21T23:05:52.8557635Z       "stages": {
2026-06-21T23:05:52.8557760Z         "doc": {
2026-06-21T23:05:52.8557892Z           "complete": true,
2026-06-21T23:05:52.8558039Z           "evidence": [
2026-06-21T23:05:52.8558162Z             {
2026-06-21T23:05:52.8558308Z               "path": "CONTEXT.md",
2026-06-21T23:05:52.8558462Z               "line": 687
2026-06-21T23:05:52.8558590Z             }
2026-06-21T23:05:52.8558715Z           ]
2026-06-21T23:05:52.8558843Z         },
2026-06-21T23:05:52.8559048Z         "impl": {
2026-06-21T23:05:52.8559186Z           "complete": true,
2026-06-21T23:05:52.8559324Z           "evidence": [
2026-06-21T23:05:52.8559458Z             {
2026-06-21T23:05:52.8559620Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8559768Z               "line": 3572
2026-06-21T23:05:52.8559891Z             },
2026-06-21T23:05:52.8560021Z             {
2026-06-21T23:05:52.8560173Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8560313Z               "line": 3617
2026-06-21T23:05:52.8560435Z             },
2026-06-21T23:05:52.8560558Z             {
2026-06-21T23:05:52.8560710Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8560832Z               "line": 3679
2026-06-21T23:05:52.8560956Z             },
2026-06-21T23:05:52.8561072Z             {
2026-06-21T23:05:52.8561357Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.8561499Z               "line": 92
2026-06-21T23:05:52.8561710Z             },
2026-06-21T23:05:52.8561828Z             {
2026-06-21T23:05:52.8562015Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.8562163Z               "line": 148
2026-06-21T23:05:52.8562273Z             }
2026-06-21T23:05:52.8562406Z           ]
2026-06-21T23:05:52.8562536Z         },
2026-06-21T23:05:52.8562663Z         "int": {
2026-06-21T23:05:52.8562807Z           "complete": false,
2026-06-21T23:05:52.8562941Z           "evidence": []
2026-06-21T23:05:52.8563073Z         },
2026-06-21T23:05:52.8563198Z         "unit": {
2026-06-21T23:05:52.8563339Z           "complete": true,
2026-06-21T23:05:52.8563468Z           "evidence": [
2026-06-21T23:05:52.8563593Z             {
2026-06-21T23:05:52.8563763Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.8563888Z               "line": 442
2026-06-21T23:05:52.8564021Z             },
2026-06-21T23:05:52.8564141Z             {
2026-06-21T23:05:52.8564303Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.8564446Z               "line": 460
2026-06-21T23:05:52.8564574Z             }
2026-06-21T23:05:52.8564703Z           ]
2026-06-21T23:05:52.8564828Z         }
2026-06-21T23:05:52.8564956Z       }
2026-06-21T23:05:52.8565071Z     },
2026-06-21T23:05:52.8565185Z     {
2026-06-21T23:05:52.8565347Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T23:05:52.8567156Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T23:05:52.8567327Z       "requiredStages": [
2026-06-21T23:05:52.8567446Z         "doc",
2026-06-21T23:05:52.8567565Z         "impl",
2026-06-21T23:05:52.8567696Z         "unit"
2026-06-21T23:05:52.8567823Z       ],
2026-06-21T23:05:52.8567957Z       "stages": {
2026-06-21T23:05:52.8568080Z         "doc": {
2026-06-21T23:05:52.8568224Z           "complete": true,
2026-06-21T23:05:52.8568358Z           "evidence": [
2026-06-21T23:05:52.8568485Z             {
2026-06-21T23:05:52.8568628Z               "path": "CONTEXT.md",
2026-06-21T23:05:52.8568764Z               "line": 711
2026-06-21T23:05:52.8568892Z             }
2026-06-21T23:05:52.8569102Z           ]
2026-06-21T23:05:52.8569226Z         },
2026-06-21T23:05:52.8569351Z         "impl": {
2026-06-21T23:05:52.8569497Z           "complete": true,
2026-06-21T23:05:52.8569632Z           "evidence": [
2026-06-21T23:05:52.8569760Z             {
2026-06-21T23:05:52.8569924Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8570066Z               "line": 1721
2026-06-21T23:05:52.8570190Z             },
2026-06-21T23:05:52.8570318Z             {
2026-06-21T23:05:52.8570470Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8570615Z               "line": 3125
2026-06-21T23:05:52.8570743Z             },
2026-06-21T23:05:52.8570873Z             {
2026-06-21T23:05:52.8571024Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8571166Z               "line": 3134
2026-06-21T23:05:52.8571293Z             }
2026-06-21T23:05:52.8571416Z           ]
2026-06-21T23:05:52.8571550Z         },
2026-06-21T23:05:52.8571674Z         "int": {
2026-06-21T23:05:52.8571822Z           "complete": false,
2026-06-21T23:05:52.8571951Z           "evidence": []
2026-06-21T23:05:52.8572074Z         },
2026-06-21T23:05:52.8572208Z         "unit": {
2026-06-21T23:05:52.8572457Z           "complete": true,
2026-06-21T23:05:52.8572594Z           "evidence": [
2026-06-21T23:05:52.8572718Z             {
2026-06-21T23:05:52.8572999Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8573138Z               "line": 7950
2026-06-21T23:05:52.8573261Z             },
2026-06-21T23:05:52.8573386Z             {
2026-06-21T23:05:52.8573543Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8573682Z               "line": 7991
2026-06-21T23:05:52.8573806Z             }
2026-06-21T23:05:52.8573937Z           ]
2026-06-21T23:05:52.8574062Z         }
2026-06-21T23:05:52.8574191Z       }
2026-06-21T23:05:52.8574304Z     },
2026-06-21T23:05:52.8574430Z     {
2026-06-21T23:05:52.8574595Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T23:05:52.8579433Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T23:05:52.8579662Z       "requiredStages": [
2026-06-21T23:05:52.8579791Z         "doc",
2026-06-21T23:05:52.8579920Z         "impl",
2026-06-21T23:05:52.8580048Z         "unit",
2026-06-21T23:05:52.8580174Z         "int"
2026-06-21T23:05:52.8580301Z       ],
2026-06-21T23:05:52.8580426Z       "stages": {
2026-06-21T23:05:52.8580554Z         "doc": {
2026-06-21T23:05:52.8580688Z           "complete": true,
2026-06-21T23:05:52.8580822Z           "evidence": [
2026-06-21T23:05:52.8580954Z             {
2026-06-21T23:05:52.8581094Z               "path": "CONTEXT.md",
2026-06-21T23:05:52.8581231Z               "line": 163
2026-06-21T23:05:52.8581355Z             }
2026-06-21T23:05:52.8581489Z           ]
2026-06-21T23:05:52.8581612Z         },
2026-06-21T23:05:52.8581750Z         "impl": {
2026-06-21T23:05:52.8581900Z           "complete": true,
2026-06-21T23:05:52.8582033Z           "evidence": [
2026-06-21T23:05:52.8582163Z             {
2026-06-21T23:05:52.8582339Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:05:52.8582478Z               "line": 105
2026-06-21T23:05:52.8582601Z             },
2026-06-21T23:05:52.8582730Z             {
2026-06-21T23:05:52.8582882Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8583017Z               "line": 7219
2026-06-21T23:05:52.8583145Z             }
2026-06-21T23:05:52.8583273Z           ]
2026-06-21T23:05:52.8583403Z         },
2026-06-21T23:05:52.8583531Z         "int": {
2026-06-21T23:05:52.8583680Z           "complete": true,
2026-06-21T23:05:52.8583807Z           "evidence": [
2026-06-21T23:05:52.8583932Z             {
2026-06-21T23:05:52.8584093Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8584342Z               "line": 7384
2026-06-21T23:05:52.8584479Z             }
2026-06-21T23:05:52.8584602Z           ]
2026-06-21T23:05:52.8584822Z         },
2026-06-21T23:05:52.8584956Z         "unit": {
2026-06-21T23:05:52.8585094Z           "complete": true,
2026-06-21T23:05:52.8585237Z           "evidence": [
2026-06-21T23:05:52.8585361Z             {
2026-06-21T23:05:52.8585523Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8585662Z               "line": 7355
2026-06-21T23:05:52.8585785Z             }
2026-06-21T23:05:52.8585915Z           ]
2026-06-21T23:05:52.8586037Z         }
2026-06-21T23:05:52.8586167Z       }
2026-06-21T23:05:52.8586287Z     },
2026-06-21T23:05:52.8586410Z     {
2026-06-21T23:05:52.8586568Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T23:05:52.8587947Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T23:05:52.8588119Z       "requiredStages": [
2026-06-21T23:05:52.8588247Z         "impl",
2026-06-21T23:05:52.8588375Z         "unit"
2026-06-21T23:05:52.8588496Z       ],
2026-06-21T23:05:52.8588629Z       "stages": {
2026-06-21T23:05:52.8588758Z         "doc": {
2026-06-21T23:05:52.8588891Z           "complete": false,
2026-06-21T23:05:52.8589106Z           "evidence": []
2026-06-21T23:05:52.8589224Z         },
2026-06-21T23:05:52.8589358Z         "impl": {
2026-06-21T23:05:52.8589493Z           "complete": true,
2026-06-21T23:05:52.8589629Z           "evidence": [
2026-06-21T23:05:52.8589757Z             {
2026-06-21T23:05:52.8589917Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8590051Z               "line": 3165
2026-06-21T23:05:52.8590185Z             }
2026-06-21T23:05:52.8590332Z           ]
2026-06-21T23:05:52.8590457Z         },
2026-06-21T23:05:52.8590594Z         "int": {
2026-06-21T23:05:52.8590734Z           "complete": false,
2026-06-21T23:05:52.8590866Z           "evidence": []
2026-06-21T23:05:52.8591000Z         },
2026-06-21T23:05:52.8591114Z         "unit": {
2026-06-21T23:05:52.8591262Z           "complete": true,
2026-06-21T23:05:52.8591387Z           "evidence": [
2026-06-21T23:05:52.8591524Z             {
2026-06-21T23:05:52.8591683Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8591848Z               "line": 7331
2026-06-21T23:05:52.8591969Z             }
2026-06-21T23:05:52.8592087Z           ]
2026-06-21T23:05:52.8592214Z         }
2026-06-21T23:05:52.8592339Z       }
2026-06-21T23:05:52.8592455Z     },
2026-06-21T23:05:52.8592584Z     {
2026-06-21T23:05:52.8592719Z       "id": "REQ-EP-1",
2026-06-21T23:05:52.8592913Z       "title": "Day-one endpoint types; open type system",
2026-06-21T23:05:52.8593062Z       "requiredStages": [
2026-06-21T23:05:52.8593194Z         "impl",
2026-06-21T23:05:52.8593328Z         "unit"
2026-06-21T23:05:52.8593452Z       ],
2026-06-21T23:05:52.8593582Z       "stages": {
2026-06-21T23:05:52.8593710Z         "doc": {
2026-06-21T23:05:52.8593852Z           "complete": false,
2026-06-21T23:05:52.8593986Z           "evidence": []
2026-06-21T23:05:52.8594115Z         },
2026-06-21T23:05:52.8594245Z         "impl": {
2026-06-21T23:05:52.8594377Z           "complete": true,
2026-06-21T23:05:52.8594516Z           "evidence": [
2026-06-21T23:05:52.8594644Z             {
2026-06-21T23:05:52.8594822Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:05:52.8594954Z               "line": 77
2026-06-21T23:05:52.8595081Z             },
2026-06-21T23:05:52.8595201Z             {
2026-06-21T23:05:52.8595387Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:05:52.8595521Z               "line": 94
2026-06-21T23:05:52.8595753Z             }
2026-06-21T23:05:52.8595884Z           ]
2026-06-21T23:05:52.8596007Z         },
2026-06-21T23:05:52.8596141Z         "int": {
2026-06-21T23:05:52.8596383Z           "complete": false,
2026-06-21T23:05:52.8596518Z           "evidence": []
2026-06-21T23:05:52.8596655Z         },
2026-06-21T23:05:52.8596781Z         "unit": {
2026-06-21T23:05:52.8596927Z           "complete": true,
2026-06-21T23:05:52.8597061Z           "evidence": [
2026-06-21T23:05:52.8597195Z             {
2026-06-21T23:05:52.8597365Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:05:52.8597507Z               "line": 161
2026-06-21T23:05:52.8597634Z             },
2026-06-21T23:05:52.8597754Z             {
2026-06-21T23:05:52.8597930Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:05:52.8598059Z               "line": 178
2026-06-21T23:05:52.8598188Z             }
2026-06-21T23:05:52.8598306Z           ]
2026-06-21T23:05:52.8598436Z         }
2026-06-21T23:05:52.8598559Z       }
2026-06-21T23:05:52.8598679Z     },
2026-06-21T23:05:52.8602262Z     {
2026-06-21T23:05:52.8602437Z       "id": "REQ-EP-2",
2026-06-21T23:05:52.8602689Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T23:05:52.8602832Z       "requiredStages": [
2026-06-21T23:05:52.8602969Z         "impl",
2026-06-21T23:05:52.8603106Z         "unit"
2026-06-21T23:05:52.8603231Z       ],
2026-06-21T23:05:52.8603354Z       "stages": {
2026-06-21T23:05:52.8603492Z         "doc": {
2026-06-21T23:05:52.8603645Z           "complete": false,
2026-06-21T23:05:52.8603778Z           "evidence": []
2026-06-21T23:05:52.8603912Z         },
2026-06-21T23:05:52.8604040Z         "impl": {
2026-06-21T23:05:52.8604180Z           "complete": true,
2026-06-21T23:05:52.8604313Z           "evidence": [
2026-06-21T23:05:52.8604432Z             {
2026-06-21T23:05:52.8604627Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:05:52.8604761Z               "line": 114
2026-06-21T23:05:52.8604904Z             },
2026-06-21T23:05:52.8605028Z             {
2026-06-21T23:05:52.8605204Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:05:52.8605347Z               "line": 131
2026-06-21T23:05:52.8605472Z             },
2026-06-21T23:05:52.8605604Z             {
2026-06-21T23:05:52.8605785Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:05:52.8605923Z               "line": 138
2026-06-21T23:05:52.8606057Z             }
2026-06-21T23:05:52.8606186Z           ]
2026-06-21T23:05:52.8606313Z         },
2026-06-21T23:05:52.8606444Z         "int": {
2026-06-21T23:05:52.8606591Z           "complete": false,
2026-06-21T23:05:52.8606721Z           "evidence": []
2026-06-21T23:05:52.8606843Z         },
2026-06-21T23:05:52.8606982Z         "unit": {
2026-06-21T23:05:52.8607111Z           "complete": true,
2026-06-21T23:05:52.8607249Z           "evidence": [
2026-06-21T23:05:52.8607374Z             {
2026-06-21T23:05:52.8607549Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:05:52.8607693Z               "line": 190
2026-06-21T23:05:52.8607825Z             },
2026-06-21T23:05:52.8607958Z             {
2026-06-21T23:05:52.8608128Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:05:52.8608261Z               "line": 208
2026-06-21T23:05:52.8608390Z             },
2026-06-21T23:05:52.8608523Z             {
2026-06-21T23:05:52.8608691Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:05:52.8608833Z               "line": 221
2026-06-21T23:05:52.8609039Z             }
2026-06-21T23:05:52.8609166Z           ]
2026-06-21T23:05:52.8609292Z         }
2026-06-21T23:05:52.8609420Z       }
2026-06-21T23:05:52.8609544Z     },
2026-06-21T23:05:52.8609659Z     {
2026-06-21T23:05:52.8609787Z       "id": "REQ-EP-3",
2026-06-21T23:05:52.8610030Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T23:05:52.8610178Z       "requiredStages": [
2026-06-21T23:05:52.8610303Z         "impl",
2026-06-21T23:05:52.8610584Z         "unit"
2026-06-21T23:05:52.8610720Z       ],
2026-06-21T23:05:52.8610849Z       "stages": {
2026-06-21T23:05:52.8611075Z         "doc": {
2026-06-21T23:05:52.8611214Z           "complete": false,
2026-06-21T23:05:52.8611343Z           "evidence": []
2026-06-21T23:05:52.8611471Z         },
2026-06-21T23:05:52.8611600Z         "impl": {
2026-06-21T23:05:52.8611748Z           "complete": true,
2026-06-21T23:05:52.8611883Z           "evidence": [
2026-06-21T23:05:52.8612010Z             {
2026-06-21T23:05:52.8612197Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:05:52.8612325Z               "line": 31
2026-06-21T23:05:52.8612455Z             },
2026-06-21T23:05:52.8612578Z             {
2026-06-21T23:05:52.8612745Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:05:52.8612883Z               "line": 49
2026-06-21T23:05:52.8613007Z             }
2026-06-21T23:05:52.8613137Z           ]
2026-06-21T23:05:52.8613259Z         },
2026-06-21T23:05:52.8613387Z         "int": {
2026-06-21T23:05:52.8613529Z           "complete": false,
2026-06-21T23:05:52.8613666Z           "evidence": []
2026-06-21T23:05:52.8613791Z         },
2026-06-21T23:05:52.8613919Z         "unit": {
2026-06-21T23:05:52.8614057Z           "complete": true,
2026-06-21T23:05:52.8614196Z           "evidence": [
2026-06-21T23:05:52.8614319Z             {
2026-06-21T23:05:52.8614491Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:05:52.8614639Z               "line": 156
2026-06-21T23:05:52.8614768Z             },
2026-06-21T23:05:52.8614891Z             {
2026-06-21T23:05:52.8615070Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:05:52.8615197Z               "line": 164
2026-06-21T23:05:52.8615331Z             },
2026-06-21T23:05:52.8615454Z             {
2026-06-21T23:05:52.8615632Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:05:52.8615774Z               "line": 177
2026-06-21T23:05:52.8615893Z             },
2026-06-21T23:05:52.8616028Z             {
2026-06-21T23:05:52.8616202Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:05:52.8616350Z               "line": 200
2026-06-21T23:05:52.8616474Z             },
2026-06-21T23:05:52.8616598Z             {
2026-06-21T23:05:52.8616770Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:05:52.8616903Z               "line": 216
2026-06-21T23:05:52.8617032Z             },
2026-06-21T23:05:52.8617160Z             {
2026-06-21T23:05:52.8617328Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:05:52.8617451Z               "line": 233
2026-06-21T23:05:52.8617586Z             }
2026-06-21T23:05:52.8617714Z           ]
2026-06-21T23:05:52.8617837Z         }
2026-06-21T23:05:52.8617967Z       }
2026-06-21T23:05:52.8618090Z     },
2026-06-21T23:05:52.8618215Z     {
2026-06-21T23:05:52.8618347Z       "id": "REQ-EP-4",
2026-06-21T23:05:52.8618547Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T23:05:52.8618702Z       "requiredStages": [
2026-06-21T23:05:52.8618831Z         "impl",
2026-06-21T23:05:52.8619036Z         "unit"
2026-06-21T23:05:52.8619159Z       ],
2026-06-21T23:05:52.8619289Z       "stages": {
2026-06-21T23:05:52.8619412Z         "doc": {
2026-06-21T23:05:52.8619547Z           "complete": false,
2026-06-21T23:05:52.8619694Z           "evidence": []
2026-06-21T23:05:52.8619814Z         },
2026-06-21T23:05:52.8619947Z         "impl": {
2026-06-21T23:05:52.8620085Z           "complete": true,
2026-06-21T23:05:52.8620228Z           "evidence": [
2026-06-21T23:05:52.8620352Z             {
2026-06-21T23:05:52.8620524Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.8620662Z               "line": 778
2026-06-21T23:05:52.8620787Z             },
2026-06-21T23:05:52.8620909Z             {
2026-06-21T23:05:52.8621077Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.8621220Z               "line": 1221
2026-06-21T23:05:52.8621447Z             },
2026-06-21T23:05:52.8621584Z             {
2026-06-21T23:05:52.8621756Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8622013Z               "line": 2387
2026-06-21T23:05:52.8622138Z             },
2026-06-21T23:05:52.8622256Z             {
2026-06-21T23:05:52.8622428Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.8622561Z               "line": 125
2026-06-21T23:05:52.8622690Z             },
2026-06-21T23:05:52.8622823Z             {
2026-06-21T23:05:52.8622985Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.8623124Z               "line": 715
2026-06-21T23:05:52.8623252Z             },
2026-06-21T23:05:52.8623382Z             {
2026-06-21T23:05:52.8623548Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.8623683Z               "line": 864
2026-06-21T23:05:52.8623814Z             },
2026-06-21T23:05:52.8623932Z             {
2026-06-21T23:05:52.8624104Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8624250Z               "line": 321
2026-06-21T23:05:52.8624389Z             },
2026-06-21T23:05:52.8624512Z             {
2026-06-21T23:05:52.8624690Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8624831Z               "line": 508
2026-06-21T23:05:52.8624952Z             },
2026-06-21T23:05:52.8625081Z             {
2026-06-21T23:05:52.8625243Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8625385Z               "line": 1334
2026-06-21T23:05:52.8625509Z             }
2026-06-21T23:05:52.8625630Z           ]
2026-06-21T23:05:52.8625757Z         },
2026-06-21T23:05:52.8625882Z         "int": {
2026-06-21T23:05:52.8626028Z           "complete": false,
2026-06-21T23:05:52.8626167Z           "evidence": []
2026-06-21T23:05:52.8626297Z         },
2026-06-21T23:05:52.8626429Z         "unit": {
2026-06-21T23:05:52.8626574Z           "complete": true,
2026-06-21T23:05:52.8626710Z           "evidence": [
2026-06-21T23:05:52.8626843Z             {
2026-06-21T23:05:52.8627015Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.8627163Z               "line": 955
2026-06-21T23:05:52.8627307Z             },
2026-06-21T23:05:52.8627434Z             {
2026-06-21T23:05:52.8627616Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T23:05:52.8627758Z               "line": 76
2026-06-21T23:05:52.8627879Z             },
2026-06-21T23:05:52.8628002Z             {
2026-06-21T23:05:52.8628175Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T23:05:52.8628303Z               "line": 147
2026-06-21T23:05:52.8628437Z             }
2026-06-21T23:05:52.8628546Z           ]
2026-06-21T23:05:52.8628674Z         }
2026-06-21T23:05:52.8628800Z       }
2026-06-21T23:05:52.8628917Z     },
2026-06-21T23:05:52.8629107Z     {
2026-06-21T23:05:52.8629248Z       "id": "REQ-EP-5",
2026-06-21T23:05:52.8629968Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T23:05:52.8630135Z       "requiredStages": [
2026-06-21T23:05:52.8630268Z         "impl",
2026-06-21T23:05:52.8630393Z         "unit",
2026-06-21T23:05:52.8630521Z         "int"
2026-06-21T23:05:52.8630645Z       ],
2026-06-21T23:05:52.8630779Z       "stages": {
2026-06-21T23:05:52.8630902Z         "doc": {
2026-06-21T23:05:52.8631051Z           "complete": false,
2026-06-21T23:05:52.8631188Z           "evidence": []
2026-06-21T23:05:52.8631318Z         },
2026-06-21T23:05:52.8631451Z         "impl": {
2026-06-21T23:05:52.8631594Z           "complete": true,
2026-06-21T23:05:52.8631728Z           "evidence": [
2026-06-21T23:05:52.8631846Z             {
2026-06-21T23:05:52.8632036Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.8632182Z               "line": 367
2026-06-21T23:05:52.8632406Z             },
2026-06-21T23:05:52.8632534Z             {
2026-06-21T23:05:52.8632712Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:05:52.8633041Z               "line": 18
2026-06-21T23:05:52.8633168Z             },
2026-06-21T23:05:52.8633293Z             {
2026-06-21T23:05:52.8633474Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:05:52.8633599Z               "line": 63
2026-06-21T23:05:52.8633731Z             },
2026-06-21T23:05:52.8633856Z             {
2026-06-21T23:05:52.8634041Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:05:52.8634176Z               "line": 92
2026-06-21T23:05:52.8634285Z             },
2026-06-21T23:05:52.8634417Z             {
2026-06-21T23:05:52.8634588Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:05:52.8634729Z               "line": 167
2026-06-21T23:05:52.8634858Z             },
2026-06-21T23:05:52.8634988Z             {
2026-06-21T23:05:52.8635163Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:05:52.8635302Z               "line": 179
2026-06-21T23:05:52.8635440Z             },
2026-06-21T23:05:52.8635564Z             {
2026-06-21T23:05:52.8635735Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.8635870Z               "line": 114
2026-06-21T23:05:52.8636003Z             },
2026-06-21T23:05:52.8636127Z             {
2026-06-21T23:05:52.8636303Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:52.8636432Z               "line": 22
2026-06-21T23:05:52.8636561Z             },
2026-06-21T23:05:52.8636684Z             {
2026-06-21T23:05:52.8636890Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:52.8637033Z               "line": 145
2026-06-21T23:05:52.8637181Z             },
2026-06-21T23:05:52.8637308Z             {
2026-06-21T23:05:52.8637476Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:52.8637608Z               "line": 174
2026-06-21T23:05:52.8637737Z             },
2026-06-21T23:05:52.8637857Z             {
2026-06-21T23:05:52.8638028Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:52.8638171Z               "line": 196
2026-06-21T23:05:52.8638299Z             },
2026-06-21T23:05:52.8638420Z             {
2026-06-21T23:05:52.8638580Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:52.8638720Z               "line": 221
2026-06-21T23:05:52.8638853Z             },
2026-06-21T23:05:52.8639054Z             {
2026-06-21T23:05:52.8639229Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:52.8639369Z               "line": 247
2026-06-21T23:05:52.8639501Z             },
2026-06-21T23:05:52.8639619Z             {
2026-06-21T23:05:52.8639789Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:52.8639931Z               "line": 270
2026-06-21T23:05:52.8640057Z             },
2026-06-21T23:05:52.8640184Z             {
2026-06-21T23:05:52.8640352Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.8640499Z               "line": 104
2026-06-21T23:05:52.8640614Z             },
2026-06-21T23:05:52.8640738Z             {
2026-06-21T23:05:52.8640900Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8641034Z               "line": 6068
2026-06-21T23:05:52.8641167Z             },
2026-06-21T23:05:52.8641287Z             {
2026-06-21T23:05:52.8641448Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8641578Z               "line": 6202
2026-06-21T23:05:52.8641706Z             },
2026-06-21T23:05:52.8641834Z             {
2026-06-21T23:05:52.8641983Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8642121Z               "line": 6368
2026-06-21T23:05:52.8642241Z             },
2026-06-21T23:05:52.8642373Z             {
2026-06-21T23:05:52.8642529Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8642671Z               "line": 6896
2026-06-21T23:05:52.8642904Z             }
2026-06-21T23:05:52.8643042Z           ]
2026-06-21T23:05:52.8643181Z         },
2026-06-21T23:05:52.8643400Z         "int": {
2026-06-21T23:05:52.8643548Z           "complete": true,
2026-06-21T23:05:52.8643681Z           "evidence": [
2026-06-21T23:05:52.8643800Z             {
2026-06-21T23:05:52.8643977Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T23:05:52.8644106Z               "line": 16
2026-06-21T23:05:52.8644235Z             },
2026-06-21T23:05:52.8644363Z             {
2026-06-21T23:05:52.8644531Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T23:05:52.8644664Z               "line": 15
2026-06-21T23:05:52.8644789Z             }
2026-06-21T23:05:52.8644916Z           ]
2026-06-21T23:05:52.8645039Z         },
2026-06-21T23:05:52.8645172Z         "unit": {
2026-06-21T23:05:52.8645308Z           "complete": true,
2026-06-21T23:05:52.8645447Z           "evidence": [
2026-06-21T23:05:52.8645567Z             {
2026-06-21T23:05:52.8645743Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:05:52.8645891Z               "line": 246
2026-06-21T23:05:52.8646024Z             },
2026-06-21T23:05:52.8646163Z             {
2026-06-21T23:05:52.8646334Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:05:52.8646477Z               "line": 306
2026-06-21T23:05:52.8646605Z             },
2026-06-21T23:05:52.8646754Z             {
2026-06-21T23:05:52.8646925Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:05:52.8647059Z               "line": 363
2026-06-21T23:05:52.8647192Z             },
2026-06-21T23:05:52.8647317Z             {
2026-06-21T23:05:52.8647497Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:52.8647637Z               "line": 286
2026-06-21T23:05:52.8647751Z             },
2026-06-21T23:05:52.8647878Z             {
2026-06-21T23:05:52.8648046Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:52.8648187Z               "line": 338
2026-06-21T23:05:52.8648316Z             },
2026-06-21T23:05:52.8648446Z             {
2026-06-21T23:05:52.8648622Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.8648751Z               "line": 783
2026-06-21T23:05:52.8648879Z             },
2026-06-21T23:05:52.8649079Z             {
2026-06-21T23:05:52.8649242Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8649389Z               "line": 8751
2026-06-21T23:05:52.8649518Z             },
2026-06-21T23:05:52.8649648Z             {
2026-06-21T23:05:52.8649804Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8649949Z               "line": 8904
2026-06-21T23:05:52.8650080Z             },
2026-06-21T23:05:52.8650209Z             {
2026-06-21T23:05:52.8650359Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8650491Z               "line": 9493
2026-06-21T23:05:52.8650621Z             },
2026-06-21T23:05:52.8650744Z             {
2026-06-21T23:05:52.8650898Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8651040Z               "line": 9609
2026-06-21T23:05:52.8651170Z             }
2026-06-21T23:05:52.8651298Z           ]
2026-06-21T23:05:52.8651431Z         }
2026-06-21T23:05:52.8651561Z       }
2026-06-21T23:05:52.8651684Z     },
2026-06-21T23:05:52.8651813Z     {
2026-06-21T23:05:52.8651937Z       "id": "REQ-EP-6",
2026-06-21T23:05:52.8653479Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T23:05:52.8653626Z       "requiredStages": [
2026-06-21T23:05:52.8653756Z         "doc",
2026-06-21T23:05:52.8654002Z         "impl",
2026-06-21T23:05:52.8654127Z         "unit"
2026-06-21T23:05:52.8654260Z       ],
2026-06-21T23:05:52.8654475Z       "stages": {
2026-06-21T23:05:52.8654613Z         "doc": {
2026-06-21T23:05:52.8654762Z           "complete": true,
2026-06-21T23:05:52.8654894Z           "evidence": [
2026-06-21T23:05:52.8655020Z             {
2026-06-21T23:05:52.8655171Z               "path": "CONTEXT.md",
2026-06-21T23:05:52.8655315Z               "line": 227
2026-06-21T23:05:52.8655429Z             }
2026-06-21T23:05:52.8655556Z           ]
2026-06-21T23:05:52.8655690Z         },
2026-06-21T23:05:52.8655816Z         "impl": {
2026-06-21T23:05:52.8655964Z           "complete": true,
2026-06-21T23:05:52.8656094Z           "evidence": [
2026-06-21T23:05:52.8656226Z             {
2026-06-21T23:05:52.8656389Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.8656531Z               "line": 212
2026-06-21T23:05:52.8656675Z             }
2026-06-21T23:05:52.8656808Z           ]
2026-06-21T23:05:52.8656948Z         },
2026-06-21T23:05:52.8657071Z         "int": {
2026-06-21T23:05:52.8657209Z           "complete": true,
2026-06-21T23:05:52.8657342Z           "evidence": [
2026-06-21T23:05:52.8657480Z             {
2026-06-21T23:05:52.8657653Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T23:05:52.8657781Z               "line": 18
2026-06-21T23:05:52.8657916Z             }
2026-06-21T23:05:52.8658043Z           ]
2026-06-21T23:05:52.8658178Z         },
2026-06-21T23:05:52.8658306Z         "unit": {
2026-06-21T23:05:52.8658452Z           "complete": true,
2026-06-21T23:05:52.8658586Z           "evidence": [
2026-06-21T23:05:52.8658710Z             {
2026-06-21T23:05:52.8658891Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:52.8659090Z               "line": 556
2026-06-21T23:05:52.8659230Z             },
2026-06-21T23:05:52.8659354Z             {
2026-06-21T23:05:52.8659530Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.8659673Z               "line": 904
2026-06-21T23:05:52.8659802Z             }
2026-06-21T23:05:52.8659926Z           ]
2026-06-21T23:05:52.8660049Z         }
2026-06-21T23:05:52.8660179Z       }
2026-06-21T23:05:52.8660297Z     },
2026-06-21T23:05:52.8660422Z     {
2026-06-21T23:05:52.8660569Z       "id": "REQ-EP-7",
2026-06-21T23:05:52.8662267Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T23:05:52.8662431Z       "requiredStages": [
2026-06-21T23:05:52.8662564Z         "doc",
2026-06-21T23:05:52.8662694Z         "impl",
2026-06-21T23:05:52.8662821Z         "unit"
2026-06-21T23:05:52.8662945Z       ],
2026-06-21T23:05:52.8663085Z       "stages": {
2026-06-21T23:05:52.8663217Z         "doc": {
2026-06-21T23:05:52.8663357Z           "complete": true,
2026-06-21T23:05:52.8663483Z           "evidence": [
2026-06-21T23:05:52.8663611Z             {
2026-06-21T23:05:52.8663750Z               "path": "CONTEXT.md",
2026-06-21T23:05:52.8663886Z               "line": 490
2026-06-21T23:05:52.8664020Z             }
2026-06-21T23:05:52.8664143Z           ]
2026-06-21T23:05:52.8664282Z         },
2026-06-21T23:05:52.8664416Z         "impl": {
2026-06-21T23:05:52.8664558Z           "complete": true,
2026-06-21T23:05:52.8664692Z           "evidence": [
2026-06-21T23:05:52.8664806Z             {
2026-06-21T23:05:52.8664974Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:52.8665102Z               "line": 505
2026-06-21T23:05:52.8665236Z             },
2026-06-21T23:05:52.8665364Z             {
2026-06-21T23:05:52.8665656Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:05:52.8665803Z               "line": 87
2026-06-21T23:05:52.8666031Z             },
2026-06-21T23:05:52.8666164Z             {
2026-06-21T23:05:52.8666376Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.8666510Z               "line": 81
2026-06-21T23:05:52.8666630Z             },
2026-06-21T23:05:52.8666748Z             {
2026-06-21T23:05:52.8666925Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.8667063Z               "line": 166
2026-06-21T23:05:52.8667193Z             },
2026-06-21T23:05:52.8667311Z             {
2026-06-21T23:05:52.8667464Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8667607Z               "line": 1645
2026-06-21T23:05:52.8667731Z             }
2026-06-21T23:05:52.8667865Z           ]
2026-06-21T23:05:52.8667988Z         },
2026-06-21T23:05:52.8668117Z         "int": {
2026-06-21T23:05:52.8668265Z           "complete": false,
2026-06-21T23:05:52.8668398Z           "evidence": []
2026-06-21T23:05:52.8668523Z         },
2026-06-21T23:05:52.8668656Z         "unit": {
2026-06-21T23:05:52.8668805Z           "complete": true,
2026-06-21T23:05:52.8669021Z           "evidence": [
2026-06-21T23:05:52.8669156Z             {
2026-06-21T23:05:52.8669317Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:52.8669461Z               "line": 623
2026-06-21T23:05:52.8669589Z             },
2026-06-21T23:05:52.8669713Z             {
2026-06-21T23:05:52.8669881Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:05:52.8670009Z               "line": 212
2026-06-21T23:05:52.8670148Z             },
2026-06-21T23:05:52.8670271Z             {
2026-06-21T23:05:52.8670439Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:05:52.8670581Z               "line": 307
2026-06-21T23:05:52.8670702Z             },
2026-06-21T23:05:52.8670829Z             {
2026-06-21T23:05:52.8670987Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8671129Z               "line": 7724
2026-06-21T23:05:52.8671252Z             },
2026-06-21T23:05:52.8671376Z             {
2026-06-21T23:05:52.8671531Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8671660Z               "line": 7751
2026-06-21T23:05:52.8671790Z             }
2026-06-21T23:05:52.8671912Z           ]
2026-06-21T23:05:52.8672043Z         }
2026-06-21T23:05:52.8672166Z       }
2026-06-21T23:05:52.8672290Z     },
2026-06-21T23:05:52.8672413Z     {
2026-06-21T23:05:52.8672546Z       "id": "REQ-FRONT-1",
2026-06-21T23:05:52.8672786Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T23:05:52.8672934Z       "requiredStages": [],
2026-06-21T23:05:52.8673062Z       "stages": {
2026-06-21T23:05:52.8673176Z         "doc": {
2026-06-21T23:05:52.8673325Z           "complete": false,
2026-06-21T23:05:52.8673458Z           "evidence": []
2026-06-21T23:05:52.8673588Z         },
2026-06-21T23:05:52.8673720Z         "impl": {
2026-06-21T23:05:52.8673864Z           "complete": false,
2026-06-21T23:05:52.8674002Z           "evidence": []
2026-06-21T23:05:52.8674129Z         },
2026-06-21T23:05:52.8674262Z         "int": {
2026-06-21T23:05:52.8674403Z           "complete": false,
2026-06-21T23:05:52.8674537Z           "evidence": []
2026-06-21T23:05:52.8674671Z         },
2026-06-21T23:05:52.8674799Z         "unit": {
2026-06-21T23:05:52.8674942Z           "complete": false,
2026-06-21T23:05:52.8675080Z           "evidence": []
2026-06-21T23:05:52.8675205Z         }
2026-06-21T23:05:52.8675334Z       }
2026-06-21T23:05:52.8675457Z     },
2026-06-21T23:05:52.8675586Z     {
2026-06-21T23:05:52.8675738Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T23:05:52.8681252Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T23:05:52.8681657Z       "requiredStages": [
2026-06-21T23:05:52.8681779Z         "int"
2026-06-21T23:05:52.8681918Z       ],
2026-06-21T23:05:52.8682049Z       "stages": {
2026-06-21T23:05:52.8682186Z         "doc": {
2026-06-21T23:05:52.8682331Z           "complete": false,
2026-06-21T23:05:52.8682463Z           "evidence": []
2026-06-21T23:05:52.8682583Z         },
2026-06-21T23:05:52.8682716Z         "impl": {
2026-06-21T23:05:52.8682860Z           "complete": false,
2026-06-21T23:05:52.8682983Z           "evidence": []
2026-06-21T23:05:52.8683121Z         },
2026-06-21T23:05:52.8683251Z         "int": {
2026-06-21T23:05:52.8683388Z           "complete": true,
2026-06-21T23:05:52.8683527Z           "evidence": [
2026-06-21T23:05:52.8683656Z             {
2026-06-21T23:05:52.8683842Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T23:05:52.8683970Z               "line": 300
2026-06-21T23:05:52.8684099Z             }
2026-06-21T23:05:52.8684224Z           ]
2026-06-21T23:05:52.8684352Z         },
2026-06-21T23:05:52.8684486Z         "unit": {
2026-06-21T23:05:52.8684623Z           "complete": false,
2026-06-21T23:05:52.8684765Z           "evidence": []
2026-06-21T23:05:52.8684893Z         }
2026-06-21T23:05:52.8685020Z       }
2026-06-21T23:05:52.8685150Z     },
2026-06-21T23:05:52.8685273Z     {
2026-06-21T23:05:52.8685431Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T23:05:52.8688008Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T23:05:52.8688183Z       "requiredStages": [
2026-06-21T23:05:52.8688318Z         "impl",
2026-06-21T23:05:52.8688446Z         "unit",
2026-06-21T23:05:52.8688579Z         "int"
2026-06-21T23:05:52.8688798Z       ],
2026-06-21T23:05:52.8688928Z       "stages": {
2026-06-21T23:05:52.8689137Z         "doc": {
2026-06-21T23:05:52.8689423Z           "complete": false,
2026-06-21T23:05:52.8689558Z           "evidence": []
2026-06-21T23:05:52.8689681Z         },
2026-06-21T23:05:52.8689814Z         "impl": {
2026-06-21T23:05:52.8689954Z           "complete": true,
2026-06-21T23:05:52.8690090Z           "evidence": [
2026-06-21T23:05:52.8690213Z             {
2026-06-21T23:05:52.8690385Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.8690524Z               "line": 257
2026-06-21T23:05:52.8690643Z             }
2026-06-21T23:05:52.8690776Z           ]
2026-06-21T23:05:52.8690906Z         },
2026-06-21T23:05:52.8691034Z         "int": {
2026-06-21T23:05:52.8691177Z           "complete": true,
2026-06-21T23:05:52.8691310Z           "evidence": [
2026-06-21T23:05:52.8691448Z             {
2026-06-21T23:05:52.8691639Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T23:05:52.8691788Z               "line": 93
2026-06-21T23:05:52.8691921Z             }
2026-06-21T23:05:52.8692049Z           ]
2026-06-21T23:05:52.8692179Z         },
2026-06-21T23:05:52.8692307Z         "unit": {
2026-06-21T23:05:52.8692453Z           "complete": true,
2026-06-21T23:05:52.8692581Z           "evidence": [
2026-06-21T23:05:52.8692718Z             {
2026-06-21T23:05:52.8692881Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.8693013Z               "line": 802
2026-06-21T23:05:52.8693138Z             },
2026-06-21T23:05:52.8693267Z             {
2026-06-21T23:05:52.8693439Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.8693577Z               "line": 824
2026-06-21T23:05:52.8693715Z             },
2026-06-21T23:05:52.8693839Z             {
2026-06-21T23:05:52.8694006Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.8694149Z               "line": 855
2026-06-21T23:05:52.8694259Z             }
2026-06-21T23:05:52.8694389Z           ]
2026-06-21T23:05:52.8694516Z         }
2026-06-21T23:05:52.8694645Z       }
2026-06-21T23:05:52.8694774Z     },
2026-06-21T23:05:52.8694898Z     {
2026-06-21T23:05:52.8695070Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T23:05:52.8697575Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T23:05:52.8697735Z       "requiredStages": [
2026-06-21T23:05:52.8697873Z         "doc",
2026-06-21T23:05:52.8698006Z         "impl",
2026-06-21T23:05:52.8698133Z         "unit",
2026-06-21T23:05:52.8698262Z         "int"
2026-06-21T23:05:52.8698386Z       ],
2026-06-21T23:05:52.8698514Z       "stages": {
2026-06-21T23:05:52.8698643Z         "doc": {
2026-06-21T23:05:52.8698781Z           "complete": true,
2026-06-21T23:05:52.8698921Z           "evidence": [
2026-06-21T23:05:52.8699144Z             {
2026-06-21T23:05:52.8699311Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.8699463Z               "line": 333
2026-06-21T23:05:52.8699593Z             }
2026-06-21T23:05:52.8699716Z           ]
2026-06-21T23:05:52.8699846Z         },
2026-06-21T23:05:52.8699973Z         "impl": {
2026-06-21T23:05:52.8700098Z           "complete": true,
2026-06-21T23:05:52.8700232Z           "evidence": [
2026-06-21T23:05:52.8700466Z             {
2026-06-21T23:05:52.8700655Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8700880Z               "line": 494
2026-06-21T23:05:52.8701007Z             },
2026-06-21T23:05:52.8701142Z             {
2026-06-21T23:05:52.8701307Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8701452Z               "line": 499
2026-06-21T23:05:52.8701570Z             },
2026-06-21T23:05:52.8701699Z             {
2026-06-21T23:05:52.8701870Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8702018Z               "line": 874
2026-06-21T23:05:52.8702133Z             },
2026-06-21T23:05:52.8702261Z             {
2026-06-21T23:05:52.8702439Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8702566Z               "line": 915
2026-06-21T23:05:52.8702696Z             },
2026-06-21T23:05:52.8702819Z             {
2026-06-21T23:05:52.8702995Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8703146Z               "line": 926
2026-06-21T23:05:52.8703268Z             },
2026-06-21T23:05:52.8703403Z             {
2026-06-21T23:05:52.8703574Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:52.8703718Z               "line": 358
2026-06-21T23:05:52.8703846Z             }
2026-06-21T23:05:52.8703975Z           ]
2026-06-21T23:05:52.8704104Z         },
2026-06-21T23:05:52.8704231Z         "int": {
2026-06-21T23:05:52.8704375Z           "complete": true,
2026-06-21T23:05:52.8704504Z           "evidence": [
2026-06-21T23:05:52.8704634Z             {
2026-06-21T23:05:52.8704823Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T23:05:52.8704968Z               "line": 30
2026-06-21T23:05:52.8705100Z             }
2026-06-21T23:05:52.8705225Z           ]
2026-06-21T23:05:52.8705353Z         },
2026-06-21T23:05:52.8705482Z         "unit": {
2026-06-21T23:05:52.8705612Z           "complete": true,
2026-06-21T23:05:52.8705753Z           "evidence": [
2026-06-21T23:05:52.8705881Z             {
2026-06-21T23:05:52.8706060Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8706188Z               "line": 1493
2026-06-21T23:05:52.8706318Z             },
2026-06-21T23:05:52.8706445Z             {
2026-06-21T23:05:52.8706623Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8706760Z               "line": 1518
2026-06-21T23:05:52.8706895Z             },
2026-06-21T23:05:52.8707028Z             {
2026-06-21T23:05:52.8707186Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8707318Z               "line": 1535
2026-06-21T23:05:52.8707447Z             },
2026-06-21T23:05:52.8707577Z             {
2026-06-21T23:05:52.8707748Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8707892Z               "line": 1578
2026-06-21T23:05:52.8708034Z             }
2026-06-21T23:05:52.8708159Z           ]
2026-06-21T23:05:52.8711716Z         }
2026-06-21T23:05:52.8711882Z       }
2026-06-21T23:05:52.8712012Z     },
2026-06-21T23:05:52.8712140Z     {
2026-06-21T23:05:52.8712355Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T23:05:52.8715121Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T23:05:52.8715542Z       "requiredStages": [],
2026-06-21T23:05:52.8715665Z       "stages": {
2026-06-21T23:05:52.8715795Z         "doc": {
2026-06-21T23:05:52.8715941Z           "complete": false,
2026-06-21T23:05:52.8716070Z           "evidence": []
2026-06-21T23:05:52.8716200Z         },
2026-06-21T23:05:52.8716341Z         "impl": {
2026-06-21T23:05:52.8716489Z           "complete": false,
2026-06-21T23:05:52.8716620Z           "evidence": []
2026-06-21T23:05:52.8716753Z         },
2026-06-21T23:05:52.8716874Z         "int": {
2026-06-21T23:05:52.8717020Z           "complete": false,
2026-06-21T23:05:52.8717159Z           "evidence": []
2026-06-21T23:05:52.8717282Z         },
2026-06-21T23:05:52.8717407Z         "unit": {
2026-06-21T23:05:52.8717550Z           "complete": false,
2026-06-21T23:05:52.8717688Z           "evidence": []
2026-06-21T23:05:52.8717803Z         }
2026-06-21T23:05:52.8717941Z       }
2026-06-21T23:05:52.8718061Z     },
2026-06-21T23:05:52.8718179Z     {
2026-06-21T23:05:52.8718366Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T23:05:52.8722233Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T23:05:52.8722427Z       "requiredStages": [
2026-06-21T23:05:52.8722553Z         "impl",
2026-06-21T23:05:52.8722691Z         "unit",
2026-06-21T23:05:52.8722814Z         "int"
2026-06-21T23:05:52.8722944Z       ],
2026-06-21T23:05:52.8723067Z       "stages": {
2026-06-21T23:05:52.8723202Z         "doc": {
2026-06-21T23:05:52.8723344Z           "complete": false,
2026-06-21T23:05:52.8723483Z           "evidence": []
2026-06-21T23:05:52.8723606Z         },
2026-06-21T23:05:52.8723739Z         "impl": {
2026-06-21T23:05:52.8723879Z           "complete": true,
2026-06-21T23:05:52.8724010Z           "evidence": [
2026-06-21T23:05:52.8724143Z             {
2026-06-21T23:05:52.8724327Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8724470Z               "line": 570
2026-06-21T23:05:52.8724600Z             },
2026-06-21T23:05:52.8724722Z             {
2026-06-21T23:05:52.8724900Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8725037Z               "line": 594
2026-06-21T23:05:52.8725167Z             },
2026-06-21T23:05:52.8725290Z             {
2026-06-21T23:05:52.8725463Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8725610Z               "line": 620
2026-06-21T23:05:52.8725730Z             },
2026-06-21T23:05:52.8725858Z             {
2026-06-21T23:05:52.8726030Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8726168Z               "line": 679
2026-06-21T23:05:52.8726296Z             },
2026-06-21T23:05:52.8726544Z             {
2026-06-21T23:05:52.8726718Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:05:52.8726953Z               "line": 89
2026-06-21T23:05:52.8727082Z             },
2026-06-21T23:05:52.8727209Z             {
2026-06-21T23:05:52.8727376Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:05:52.8727514Z               "line": 134
2026-06-21T23:05:52.8727628Z             }
2026-06-21T23:05:52.8727762Z           ]
2026-06-21T23:05:52.8727881Z         },
2026-06-21T23:05:52.8728011Z         "int": {
2026-06-21T23:05:52.8728176Z           "complete": true,
2026-06-21T23:05:52.8728301Z           "evidence": [
2026-06-21T23:05:52.8728429Z             {
2026-06-21T23:05:52.8728636Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T23:05:52.8728772Z               "line": 20
2026-06-21T23:05:52.8728897Z             }
2026-06-21T23:05:52.8729125Z           ]
2026-06-21T23:05:52.8729246Z         },
2026-06-21T23:05:52.8729383Z         "unit": {
2026-06-21T23:05:52.8729525Z           "complete": true,
2026-06-21T23:05:52.8729658Z           "evidence": [
2026-06-21T23:05:52.8729785Z             {
2026-06-21T23:05:52.8729957Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.8730095Z               "line": 1047
2026-06-21T23:05:52.8730214Z             },
2026-06-21T23:05:52.8730334Z             {
2026-06-21T23:05:52.8730505Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:05:52.8730644Z               "line": 445
2026-06-21T23:05:52.8730776Z             }
2026-06-21T23:05:52.8730887Z           ]
2026-06-21T23:05:52.8731020Z         }
2026-06-21T23:05:52.8731139Z       }
2026-06-21T23:05:52.8731263Z     },
2026-06-21T23:05:52.8731382Z     {
2026-06-21T23:05:52.8731560Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T23:05:52.8734247Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T23:05:52.8734406Z       "requiredStages": [
2026-06-21T23:05:52.8734533Z         "doc",
2026-06-21T23:05:52.8734665Z         "impl",
2026-06-21T23:05:52.8734789Z         "unit",
2026-06-21T23:05:52.8734921Z         "int"
2026-06-21T23:05:52.8735050Z       ],
2026-06-21T23:05:52.8735179Z       "stages": {
2026-06-21T23:05:52.8735312Z         "doc": {
2026-06-21T23:05:52.8735441Z           "complete": true,
2026-06-21T23:05:52.8735583Z           "evidence": [
2026-06-21T23:05:52.8735709Z             {
2026-06-21T23:05:52.8735864Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.8735999Z               "line": 302
2026-06-21T23:05:52.8736128Z             }
2026-06-21T23:05:52.8736260Z           ]
2026-06-21T23:05:52.8736390Z         },
2026-06-21T23:05:52.8736518Z         "impl": {
2026-06-21T23:05:52.8736648Z           "complete": true,
2026-06-21T23:05:52.8736790Z           "evidence": [
2026-06-21T23:05:52.8736910Z             {
2026-06-21T23:05:52.8737090Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:52.8737230Z               "line": 108
2026-06-21T23:05:52.8737353Z             },
2026-06-21T23:05:52.8737522Z             {
2026-06-21T23:05:52.8737694Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.8737826Z               "line": 921
2026-06-21T23:05:52.8738203Z             },
2026-06-21T23:05:52.8738322Z             {
2026-06-21T23:05:52.8738685Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.8738905Z               "line": 1137
2026-06-21T23:05:52.8739186Z             },
2026-06-21T23:05:52.8739385Z             {
2026-06-21T23:05:52.8739690Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8739835Z               "line": 23
2026-06-21T23:05:52.8739966Z             },
2026-06-21T23:05:52.8740089Z             {
2026-06-21T23:05:52.8740265Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8740397Z               "line": 113
2026-06-21T23:05:52.8740522Z             },
2026-06-21T23:05:52.8740646Z             {
2026-06-21T23:05:52.8740823Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8740955Z               "line": 158
2026-06-21T23:05:52.8741084Z             },
2026-06-21T23:05:52.8741199Z             {
2026-06-21T23:05:52.8741380Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8741523Z               "line": 218
2026-06-21T23:05:52.8741652Z             },
2026-06-21T23:05:52.8741786Z             {
2026-06-21T23:05:52.8741957Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8742096Z               "line": 261
2026-06-21T23:05:52.8742219Z             },
2026-06-21T23:05:52.8742353Z             {
2026-06-21T23:05:52.8742519Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8742644Z               "line": 275
2026-06-21T23:05:52.8742778Z             },
2026-06-21T23:05:52.8742904Z             {
2026-06-21T23:05:52.8743077Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8743210Z               "line": 320
2026-06-21T23:05:52.8743339Z             },
2026-06-21T23:05:52.8743463Z             {
2026-06-21T23:05:52.8743634Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8743778Z               "line": 347
2026-06-21T23:05:52.8743900Z             },
2026-06-21T23:05:52.8744031Z             {
2026-06-21T23:05:52.8744211Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8744384Z               "line": 359
2026-06-21T23:05:52.8744516Z             },
2026-06-21T23:05:52.8744655Z             {
2026-06-21T23:05:52.8744841Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8744990Z               "line": 373
2026-06-21T23:05:52.8745116Z             },
2026-06-21T23:05:52.8745250Z             {
2026-06-21T23:05:52.8745419Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8745562Z               "line": 400
2026-06-21T23:05:52.8745692Z             },
2026-06-21T23:05:52.8745819Z             {
2026-06-21T23:05:52.8745992Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8746124Z               "line": 643
2026-06-21T23:05:52.8746259Z             },
2026-06-21T23:05:52.8746382Z             {
2026-06-21T23:05:52.8746564Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8746707Z               "line": 989
2026-06-21T23:05:52.8746835Z             },
2026-06-21T23:05:52.8746974Z             {
2026-06-21T23:05:52.8747145Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8747274Z               "line": 317
2026-06-21T23:05:52.8747397Z             },
2026-06-21T23:05:52.8747523Z             {
2026-06-21T23:05:52.8747698Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8747828Z               "line": 1269
2026-06-21T23:05:52.8747960Z             },
2026-06-21T23:05:52.8748083Z             {
2026-06-21T23:05:52.8748259Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8748405Z               "line": 1341
2026-06-21T23:05:52.8748530Z             },
2026-06-21T23:05:52.8748657Z             {
2026-06-21T23:05:52.8748821Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8749160Z               "line": 1353
2026-06-21T23:05:52.8749349Z             },
2026-06-21T23:05:52.8749597Z             {
2026-06-21T23:05:52.8749775Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8749912Z               "line": 2093
2026-06-21T23:05:52.8750037Z             },
2026-06-21T23:05:52.8750160Z             {
2026-06-21T23:05:52.8750332Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8750461Z               "line": 188
2026-06-21T23:05:52.8750579Z             },
2026-06-21T23:05:52.8750707Z             {
2026-06-21T23:05:52.8750877Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8751015Z               "line": 265
2026-06-21T23:05:52.8751135Z             },
2026-06-21T23:05:52.8751263Z             {
2026-06-21T23:05:52.8751426Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8751568Z               "line": 276
2026-06-21T23:05:52.8751693Z             },
2026-06-21T23:05:52.8751821Z             {
2026-06-21T23:05:52.8751989Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8752121Z               "line": 329
2026-06-21T23:05:52.8752250Z             },
2026-06-21T23:05:52.8752379Z             {
2026-06-21T23:05:52.8752555Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8752694Z               "line": 56
2026-06-21T23:05:52.8752822Z             },
2026-06-21T23:05:52.8752952Z             {
2026-06-21T23:05:52.8753118Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8753262Z               "line": 188
2026-06-21T23:05:52.8753380Z             },
2026-06-21T23:05:52.8753507Z             {
2026-06-21T23:05:52.8753685Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T23:05:52.8753822Z               "line": 82
2026-06-21T23:05:52.8753952Z             },
2026-06-21T23:05:52.8754075Z             {
2026-06-21T23:05:52.8754252Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8754395Z               "line": 308
2026-06-21T23:05:52.8754528Z             },
2026-06-21T23:05:52.8754667Z             {
2026-06-21T23:05:52.8754824Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:52.8754967Z               "line": 424
2026-06-21T23:05:52.8755091Z             },
2026-06-21T23:05:52.8755235Z             {
2026-06-21T23:05:52.8755391Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.8755531Z               "line": 2006
2026-06-21T23:05:52.8755658Z             }
2026-06-21T23:05:52.8755781Z           ]
2026-06-21T23:05:52.8755909Z         },
2026-06-21T23:05:52.8756026Z         "int": {
2026-06-21T23:05:52.8756179Z           "complete": true,
2026-06-21T23:05:52.8756318Z           "evidence": [
2026-06-21T23:05:52.8756441Z             {
2026-06-21T23:05:52.8756628Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T23:05:52.8756756Z               "line": 57
2026-06-21T23:05:52.8756890Z             },
2026-06-21T23:05:52.8757018Z             {
2026-06-21T23:05:52.8757196Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T23:05:52.8757342Z               "line": 41
2026-06-21T23:05:52.8757472Z             }
2026-06-21T23:05:52.8757596Z           ]
2026-06-21T23:05:52.8757725Z         },
2026-06-21T23:05:52.8757858Z         "unit": {
2026-06-21T23:05:52.8757996Z           "complete": true,
2026-06-21T23:05:52.8758145Z           "evidence": [
2026-06-21T23:05:52.8758273Z             {
2026-06-21T23:05:52.8758455Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:52.8758596Z               "line": 532
2026-06-21T23:05:52.8758720Z             },
2026-06-21T23:05:52.8758847Z             {
2026-06-21T23:05:52.8759100Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:52.8759241Z               "line": 757
2026-06-21T23:05:52.8759376Z             },
2026-06-21T23:05:52.8759500Z             {
2026-06-21T23:05:52.8759681Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8759933Z               "line": 1067
2026-06-21T23:05:52.8760063Z             },
2026-06-21T23:05:52.8760282Z             {
2026-06-21T23:05:52.8760462Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8760607Z               "line": 1101
2026-06-21T23:05:52.8760730Z             },
2026-06-21T23:05:52.8760849Z             {
2026-06-21T23:05:52.8774445Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8774609Z               "line": 1143
2026-06-21T23:05:52.8774743Z             },
2026-06-21T23:05:52.8774876Z             {
2026-06-21T23:05:52.8775072Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8775204Z               "line": 1215
2026-06-21T23:05:52.8775339Z             },
2026-06-21T23:05:52.8775458Z             {
2026-06-21T23:05:52.8775630Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8775782Z               "line": 1228
2026-06-21T23:05:52.8775924Z             },
2026-06-21T23:05:52.8776054Z             {
2026-06-21T23:05:52.8776230Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8776383Z               "line": 1251
2026-06-21T23:05:52.8776516Z             },
2026-06-21T23:05:52.8776651Z             {
2026-06-21T23:05:52.8776825Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8776964Z               "line": 1277
2026-06-21T23:05:52.8777090Z             },
2026-06-21T23:05:52.8777208Z             {
2026-06-21T23:05:52.8777386Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8777523Z               "line": 1291
2026-06-21T23:05:52.8777653Z             },
2026-06-21T23:05:52.8777781Z             {
2026-06-21T23:05:52.8777949Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8778081Z               "line": 1315
2026-06-21T23:05:52.8778196Z             },
2026-06-21T23:05:52.8778325Z             {
2026-06-21T23:05:52.8778501Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8778639Z               "line": 1447
2026-06-21T23:05:52.8778773Z             },
2026-06-21T23:05:52.8778898Z             {
2026-06-21T23:05:52.8779155Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8779297Z               "line": 1623
2026-06-21T23:05:52.8779436Z             },
2026-06-21T23:05:52.8779556Z             {
2026-06-21T23:05:52.8779730Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8779869Z               "line": 1678
2026-06-21T23:05:52.8779986Z             },
2026-06-21T23:05:52.8780109Z             {
2026-06-21T23:05:52.8780286Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8780424Z               "line": 1724
2026-06-21T23:05:52.8780549Z             },
2026-06-21T23:05:52.8780681Z             {
2026-06-21T23:05:52.8780845Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8780982Z               "line": 1769
2026-06-21T23:05:52.8781107Z             },
2026-06-21T23:05:52.8781235Z             {
2026-06-21T23:05:52.8781422Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8781545Z               "line": 1813
2026-06-21T23:05:52.8781673Z             },
2026-06-21T23:05:52.8781803Z             {
2026-06-21T23:05:52.8781969Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8782109Z               "line": 1855
2026-06-21T23:05:52.8782231Z             },
2026-06-21T23:05:52.8782359Z             {
2026-06-21T23:05:52.8782524Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8782671Z               "line": 2447
2026-06-21T23:05:52.8782801Z             },
2026-06-21T23:05:52.8782928Z             {
2026-06-21T23:05:52.8783101Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8783224Z               "line": 217
2026-06-21T23:05:52.8783354Z             },
2026-06-21T23:05:52.8783650Z             {
2026-06-21T23:05:52.8783816Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8784060Z               "line": 233
2026-06-21T23:05:52.8784188Z             },
2026-06-21T23:05:52.8784313Z             {
2026-06-21T23:05:52.8784489Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8784628Z               "line": 254
2026-06-21T23:05:52.8784750Z             },
2026-06-21T23:05:52.8784875Z             {
2026-06-21T23:05:52.8785042Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8785169Z               "line": 265
2026-06-21T23:05:52.8785303Z             },
2026-06-21T23:05:52.8785417Z             {
2026-06-21T23:05:52.8785593Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8785732Z               "line": 278
2026-06-21T23:05:52.8785850Z             },
2026-06-21T23:05:52.8785975Z             {
2026-06-21T23:05:52.8786156Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8786304Z               "line": 289
2026-06-21T23:05:52.8786427Z             },
2026-06-21T23:05:52.8786567Z             {
2026-06-21T23:05:52.8786737Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8786872Z               "line": 301
2026-06-21T23:05:52.8786999Z             },
2026-06-21T23:05:52.8787120Z             {
2026-06-21T23:05:52.8787286Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8787423Z               "line": 312
2026-06-21T23:05:52.8787557Z             },
2026-06-21T23:05:52.8787679Z             {
2026-06-21T23:05:52.8787846Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8787988Z               "line": 323
2026-06-21T23:05:52.8788108Z             },
2026-06-21T23:05:52.8788242Z             {
2026-06-21T23:05:52.8788407Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8788551Z               "line": 332
2026-06-21T23:05:52.8788684Z             },
2026-06-21T23:05:52.8788810Z             {
2026-06-21T23:05:52.8789066Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8789199Z               "line": 342
2026-06-21T23:05:52.8789343Z             },
2026-06-21T23:05:52.8789463Z             {
2026-06-21T23:05:52.8789638Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:05:52.8789774Z               "line": 358
2026-06-21T23:05:52.8789900Z             },
2026-06-21T23:05:52.8790031Z             {
2026-06-21T23:05:52.8790186Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8790323Z               "line": 758
2026-06-21T23:05:52.8790452Z             },
2026-06-21T23:05:52.8790570Z             {
2026-06-21T23:05:52.8790742Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8790875Z               "line": 794
2026-06-21T23:05:52.8791008Z             },
2026-06-21T23:05:52.8791133Z             {
2026-06-21T23:05:52.8791299Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:52.8791438Z               "line": 966
2026-06-21T23:05:52.8791556Z             },
2026-06-21T23:05:52.8791691Z             {
2026-06-21T23:05:52.8791862Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T23:05:52.8791987Z               "line": 145
2026-06-21T23:05:52.8792110Z             },
2026-06-21T23:05:52.8792238Z             {
2026-06-21T23:05:52.8792415Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T23:05:52.8792548Z               "line": 224
2026-06-21T23:05:52.8792669Z             },
2026-06-21T23:05:52.8792787Z             {
2026-06-21T23:05:52.8792953Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T23:05:52.8793089Z               "line": 293
2026-06-21T23:05:52.8793217Z             },
2026-06-21T23:05:52.8793342Z             {
2026-06-21T23:05:52.8793508Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T23:05:52.8793647Z               "line": 17
2026-06-21T23:05:52.8793875Z             },
2026-06-21T23:05:52.8794009Z             {
2026-06-21T23:05:52.8794171Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T23:05:52.8794405Z               "line": 104
2026-06-21T23:05:52.8794524Z             }
2026-06-21T23:05:52.8794648Z           ]
2026-06-21T23:05:52.8794771Z         }
2026-06-21T23:05:52.8794897Z       }
2026-06-21T23:05:52.8795014Z     },
2026-06-21T23:05:52.8795130Z     {
2026-06-21T23:05:52.8795301Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T23:05:52.8798473Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T23:05:52.8798663Z       "requiredStages": [
2026-06-21T23:05:52.8798788Z         "doc",
2026-06-21T23:05:52.8798920Z         "impl",
2026-06-21T23:05:52.8799140Z         "unit",
2026-06-21T23:05:52.8799278Z         "int"
2026-06-21T23:05:52.8799403Z       ],
2026-06-21T23:05:52.8799516Z       "stages": {
2026-06-21T23:05:52.8799651Z         "doc": {
2026-06-21T23:05:52.8799779Z           "complete": true,
2026-06-21T23:05:52.8799912Z           "evidence": [
2026-06-21T23:05:52.8800038Z             {
2026-06-21T23:05:52.8800198Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.8800329Z               "line": 388
2026-06-21T23:05:52.8800455Z             }
2026-06-21T23:05:52.8800586Z           ]
2026-06-21T23:05:52.8800705Z         },
2026-06-21T23:05:52.8800841Z         "impl": {
2026-06-21T23:05:52.8800980Z           "complete": true,
2026-06-21T23:05:52.8801120Z           "evidence": [
2026-06-21T23:05:52.8801244Z             {
2026-06-21T23:05:52.8801416Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8801549Z               "line": 823
2026-06-21T23:05:52.8801674Z             },
2026-06-21T23:05:52.8801807Z             {
2026-06-21T23:05:52.8801974Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8802102Z               "line": 846
2026-06-21T23:05:52.8802222Z             }
2026-06-21T23:05:52.8802350Z           ]
2026-06-21T23:05:52.8802479Z         },
2026-06-21T23:05:52.8802613Z         "int": {
2026-06-21T23:05:52.8802746Z           "complete": true,
2026-06-21T23:05:52.8802881Z           "evidence": [
2026-06-21T23:05:52.8803013Z             {
2026-06-21T23:05:52.8803191Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T23:05:52.8803327Z               "line": 228
2026-06-21T23:05:52.8803455Z             },
2026-06-21T23:05:52.8803574Z             {
2026-06-21T23:05:52.8803758Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T23:05:52.8803898Z               "line": 468
2026-06-21T23:05:52.8804016Z             }
2026-06-21T23:05:52.8804150Z           ]
2026-06-21T23:05:52.8804269Z         },
2026-06-21T23:05:52.8804402Z         "unit": {
2026-06-21T23:05:52.8804536Z           "complete": true,
2026-06-21T23:05:52.8804669Z           "evidence": [
2026-06-21T23:05:52.8804785Z             {
2026-06-21T23:05:52.8804960Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:52.8805099Z               "line": 1583
2026-06-21T23:05:52.8805332Z             }
2026-06-21T23:05:52.8805461Z           ]
2026-06-21T23:05:52.8805584Z         }
2026-06-21T23:05:52.8805805Z       }
2026-06-21T23:05:52.8805928Z     },
2026-06-21T23:05:52.8806058Z     {
2026-06-21T23:05:52.8806223Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T23:05:52.8809906Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T23:05:52.8810095Z       "requiredStages": [
2026-06-21T23:05:52.8810225Z         "doc",
2026-06-21T23:05:52.8810348Z         "impl",
2026-06-21T23:05:52.8810477Z         "unit"
2026-06-21T23:05:52.8810607Z       ],
2026-06-21T23:05:52.8810730Z       "stages": {
2026-06-21T23:05:52.8810855Z         "doc": {
2026-06-21T23:05:52.8810992Z           "complete": true,
2026-06-21T23:05:52.8811121Z           "evidence": [
2026-06-21T23:05:52.8811246Z             {
2026-06-21T23:05:52.8811397Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.8811544Z               "line": 395
2026-06-21T23:05:52.8811661Z             }
2026-06-21T23:05:52.8811785Z           ]
2026-06-21T23:05:52.8811905Z         },
2026-06-21T23:05:52.8812038Z         "impl": {
2026-06-21T23:05:52.8812168Z           "complete": true,
2026-06-21T23:05:52.8812300Z           "evidence": [
2026-06-21T23:05:52.8812429Z             {
2026-06-21T23:05:52.8812587Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.8812724Z               "line": 75
2026-06-21T23:05:52.8812849Z             }
2026-06-21T23:05:52.8812977Z           ]
2026-06-21T23:05:52.8813102Z         },
2026-06-21T23:05:52.8813230Z         "int": {
2026-06-21T23:05:52.8813368Z           "complete": false,
2026-06-21T23:05:52.8813493Z           "evidence": []
2026-06-21T23:05:52.8813626Z         },
2026-06-21T23:05:52.8813746Z         "unit": {
2026-06-21T23:05:52.8813887Z           "complete": true,
2026-06-21T23:05:52.8814025Z           "evidence": [
2026-06-21T23:05:52.8814148Z             {
2026-06-21T23:05:52.8814308Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.8814448Z               "line": 632
2026-06-21T23:05:52.8814576Z             }
2026-06-21T23:05:52.8814700Z           ]
2026-06-21T23:05:52.8814825Z         }
2026-06-21T23:05:52.8814947Z       }
2026-06-21T23:05:52.8815072Z     },
2026-06-21T23:05:52.8815182Z     {
2026-06-21T23:05:52.8815345Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T23:05:52.8815563Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T23:05:52.8815707Z       "requiredStages": [
2026-06-21T23:05:52.8815835Z         "impl",
2026-06-21T23:05:52.8815959Z         "unit"
2026-06-21T23:05:52.8816087Z       ],
2026-06-21T23:05:52.8816216Z       "stages": {
2026-06-21T23:05:52.8816351Z         "doc": {
2026-06-21T23:05:52.8816493Z           "complete": false,
2026-06-21T23:05:52.8816769Z           "evidence": []
2026-06-21T23:05:52.8816902Z         },
2026-06-21T23:05:52.8817032Z         "impl": {
2026-06-21T23:05:52.8817279Z           "complete": true,
2026-06-21T23:05:52.8817413Z           "evidence": [
2026-06-21T23:05:52.8817550Z             {
2026-06-21T23:05:52.8817728Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.8817861Z               "line": 172
2026-06-21T23:05:52.8817985Z             },
2026-06-21T23:05:52.8818108Z             {
2026-06-21T23:05:52.8818276Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.8818418Z               "line": 18
2026-06-21T23:05:52.8818544Z             },
2026-06-21T23:05:52.8818671Z             {
2026-06-21T23:05:52.8818824Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.8819046Z               "line": 100
2026-06-21T23:05:52.8819171Z             }
2026-06-21T23:05:52.8819298Z           ]
2026-06-21T23:05:52.8819425Z         },
2026-06-21T23:05:52.8819535Z         "int": {
2026-06-21T23:05:52.8819693Z           "complete": false,
2026-06-21T23:05:52.8819827Z           "evidence": []
2026-06-21T23:05:52.8819965Z         },
2026-06-21T23:05:52.8820088Z         "unit": {
2026-06-21T23:05:52.8820237Z           "complete": true,
2026-06-21T23:05:52.8820364Z           "evidence": [
2026-06-21T23:05:52.8820499Z             {
2026-06-21T23:05:52.8820670Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.8820795Z               "line": 857
2026-06-21T23:05:52.8820923Z             },
2026-06-21T23:05:52.8821042Z             {
2026-06-21T23:05:52.8821219Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.8821352Z               "line": 161
2026-06-21T23:05:52.8821477Z             },
2026-06-21T23:05:52.8821605Z             {
2026-06-21T23:05:52.8821759Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.8821895Z               "line": 233
2026-06-21T23:05:52.8822018Z             }
2026-06-21T23:05:52.8822147Z           ]
2026-06-21T23:05:52.8822278Z         }
2026-06-21T23:05:52.8822398Z       }
2026-06-21T23:05:52.8822518Z     },
2026-06-21T23:05:52.8822636Z     {
2026-06-21T23:05:52.8822798Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T23:05:52.8823275Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T23:05:52.8823423Z       "requiredStages": [
2026-06-21T23:05:52.8823551Z         "impl",
2026-06-21T23:05:52.8823677Z         "unit"
2026-06-21T23:05:52.8823809Z       ],
2026-06-21T23:05:52.8823928Z       "stages": {
2026-06-21T23:05:52.8824063Z         "doc": {
2026-06-21T23:05:52.8824205Z           "complete": true,
2026-06-21T23:05:52.8824345Z           "evidence": [
2026-06-21T23:05:52.8824471Z             {
2026-06-21T23:05:52.8824628Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.8824774Z               "line": 220
2026-06-21T23:05:52.8824907Z             }
2026-06-21T23:05:52.8825032Z           ]
2026-06-21T23:05:52.8825150Z         },
2026-06-21T23:05:52.8825280Z         "impl": {
2026-06-21T23:05:52.8825413Z           "complete": true,
2026-06-21T23:05:52.8825546Z           "evidence": [
2026-06-21T23:05:52.8825675Z             {
2026-06-21T23:05:52.8825856Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:52.8825999Z               "line": 316
2026-06-21T23:05:52.8826123Z             },
2026-06-21T23:05:52.8826258Z             {
2026-06-21T23:05:52.8826438Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.8826568Z               "line": 356
2026-06-21T23:05:52.8826700Z             },
2026-06-21T23:05:52.8826825Z             {
2026-06-21T23:05:52.8827005Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.8827145Z               "line": 578
2026-06-21T23:05:52.8827273Z             },
2026-06-21T23:05:52.8827409Z             {
2026-06-21T23:05:52.8827568Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:05:52.8827800Z               "line": 77
2026-06-21T23:05:52.8828025Z             }
2026-06-21T23:05:52.8828150Z           ]
2026-06-21T23:05:52.8828273Z         },
2026-06-21T23:05:52.8828401Z         "int": {
2026-06-21T23:05:52.8828550Z           "complete": false,
2026-06-21T23:05:52.8828683Z           "evidence": []
2026-06-21T23:05:52.8828813Z         },
2026-06-21T23:05:52.8829016Z         "unit": {
2026-06-21T23:05:52.8829156Z           "complete": true,
2026-06-21T23:05:52.8829283Z           "evidence": [
2026-06-21T23:05:52.8829403Z             {
2026-06-21T23:05:52.8829574Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.8829706Z               "line": 747
2026-06-21T23:05:52.8829840Z             },
2026-06-21T23:05:52.8829962Z             {
2026-06-21T23:05:52.8830144Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.8830276Z               "line": 785
2026-06-21T23:05:52.8830401Z             },
2026-06-21T23:05:52.8830530Z             {
2026-06-21T23:05:52.8830697Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:05:52.8830830Z               "line": 166
2026-06-21T23:05:52.8830958Z             }
2026-06-21T23:05:52.8831083Z           ]
2026-06-21T23:05:52.8831212Z         }
2026-06-21T23:05:52.8831341Z       }
2026-06-21T23:05:52.8831469Z     },
2026-06-21T23:05:52.8831592Z     {
2026-06-21T23:05:52.8831765Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T23:05:52.8832376Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T23:05:52.8837198Z       "requiredStages": [
2026-06-21T23:05:52.8837375Z         "impl",
2026-06-21T23:05:52.8837509Z         "unit"
2026-06-21T23:05:52.8837642Z       ],
2026-06-21T23:05:52.8837772Z       "stages": {
2026-06-21T23:05:52.8837903Z         "doc": {
2026-06-21T23:05:52.8838051Z           "complete": false,
2026-06-21T23:05:52.8838194Z           "evidence": []
2026-06-21T23:05:52.8838327Z         },
2026-06-21T23:05:52.8838457Z         "impl": {
2026-06-21T23:05:52.8838604Z           "complete": true,
2026-06-21T23:05:52.8838734Z           "evidence": [
2026-06-21T23:05:52.8838866Z             {
2026-06-21T23:05:52.8839138Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T23:05:52.8839280Z               "line": 22
2026-06-21T23:05:52.8839425Z             },
2026-06-21T23:05:52.8839548Z             {
2026-06-21T23:05:52.8839730Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:52.8839867Z               "line": 487
2026-06-21T23:05:52.8839988Z             },
2026-06-21T23:05:52.8840105Z             {
2026-06-21T23:05:52.8840286Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T23:05:52.8840414Z               "line": 17
2026-06-21T23:05:52.8840541Z             },
2026-06-21T23:05:52.8840670Z             {
2026-06-21T23:05:52.8840846Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T23:05:52.8840995Z               "line": 147
2026-06-21T23:05:52.8841118Z             },
2026-06-21T23:05:52.8841247Z             {
2026-06-21T23:05:52.8841433Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.8841572Z               "line": 226
2026-06-21T23:05:52.8841691Z             },
2026-06-21T23:05:52.8841814Z             {
2026-06-21T23:05:52.8842005Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.8842134Z               "line": 251
2026-06-21T23:05:52.8842259Z             },
2026-06-21T23:05:52.8842381Z             {
2026-06-21T23:05:52.8842555Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.8842696Z               "line": 277
2026-06-21T23:05:52.8842817Z             },
2026-06-21T23:05:52.8842950Z             {
2026-06-21T23:05:52.8843120Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:05:52.8843413Z               "line": 124
2026-06-21T23:05:52.8843547Z             },
2026-06-21T23:05:52.8843766Z             {
2026-06-21T23:05:52.8843948Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:05:52.8844080Z               "line": 224
2026-06-21T23:05:52.8844215Z             }
2026-06-21T23:05:52.8844343Z           ]
2026-06-21T23:05:52.8844468Z         },
2026-06-21T23:05:52.8844591Z         "int": {
2026-06-21T23:05:52.8844734Z           "complete": false,
2026-06-21T23:05:52.8844868Z           "evidence": []
2026-06-21T23:05:52.8844996Z         },
2026-06-21T23:05:52.8845126Z         "unit": {
2026-06-21T23:05:52.8845267Z           "complete": true,
2026-06-21T23:05:52.8845398Z           "evidence": [
2026-06-21T23:05:52.8845522Z             {
2026-06-21T23:05:52.8845700Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T23:05:52.8845834Z               "line": 63
2026-06-21T23:05:52.8845956Z             },
2026-06-21T23:05:52.8846094Z             {
2026-06-21T23:05:52.8846265Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T23:05:52.8846410Z               "line": 73
2026-06-21T23:05:52.8846543Z             },
2026-06-21T23:05:52.8846666Z             {
2026-06-21T23:05:52.8846839Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T23:05:52.8846971Z               "line": 85
2026-06-21T23:05:52.8847101Z             },
2026-06-21T23:05:52.8847229Z             {
2026-06-21T23:05:52.8847402Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T23:05:52.8847543Z               "line": 346
2026-06-21T23:05:52.8847669Z             },
2026-06-21T23:05:52.8847791Z             {
2026-06-21T23:05:52.8847970Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T23:05:52.8848111Z               "line": 281
2026-06-21T23:05:52.8848236Z             },
2026-06-21T23:05:52.8848366Z             {
2026-06-21T23:05:52.8848539Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T23:05:52.8848664Z               "line": 322
2026-06-21T23:05:52.8848797Z             },
2026-06-21T23:05:52.8848931Z             {
2026-06-21T23:05:52.8849173Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T23:05:52.8849317Z               "line": 360
2026-06-21T23:05:52.8849440Z             },
2026-06-21T23:05:52.8849570Z             {
2026-06-21T23:05:52.8849751Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.8849894Z               "line": 688
2026-06-21T23:05:52.8850022Z             },
2026-06-21T23:05:52.8850146Z             {
2026-06-21T23:05:52.8850323Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:05:52.8850456Z               "line": 397
2026-06-21T23:05:52.8850591Z             },
2026-06-21T23:05:52.8850709Z             {
2026-06-21T23:05:52.8850885Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:05:52.8851020Z               "line": 440
2026-06-21T23:05:52.8851149Z             }
2026-06-21T23:05:52.8851284Z           ]
2026-06-21T23:05:52.8851411Z         }
2026-06-21T23:05:52.8851541Z       }
2026-06-21T23:05:52.8851669Z     },
2026-06-21T23:05:52.8851798Z     {
2026-06-21T23:05:52.8851951Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T23:05:52.8852227Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T23:05:52.8852370Z       "requiredStages": [
2026-06-21T23:05:52.8852499Z         "impl",
2026-06-21T23:05:52.8852627Z         "unit"
2026-06-21T23:05:52.8852752Z       ],
2026-06-21T23:05:52.8852871Z       "stages": {
2026-06-21T23:05:52.8852994Z         "doc": {
2026-06-21T23:05:52.8853134Z           "complete": false,
2026-06-21T23:05:52.8853275Z           "evidence": []
2026-06-21T23:05:52.8853396Z         },
2026-06-21T23:05:52.8853529Z         "impl": {
2026-06-21T23:05:52.8853665Z           "complete": true,
2026-06-21T23:05:52.8853813Z           "evidence": [
2026-06-21T23:05:52.8853931Z             {
2026-06-21T23:05:52.8854207Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T23:05:52.8854336Z               "line": 169
2026-06-21T23:05:52.8854560Z             }
2026-06-21T23:05:52.8854689Z           ]
2026-06-21T23:05:52.8854813Z         },
2026-06-21T23:05:52.8854940Z         "int": {
2026-06-21T23:05:52.8855080Z           "complete": true,
2026-06-21T23:05:52.8855213Z           "evidence": [
2026-06-21T23:05:52.8855343Z             {
2026-06-21T23:05:52.8855499Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T23:05:52.8855628Z               "line": 44
2026-06-21T23:05:52.8855757Z             },
2026-06-21T23:05:52.8855881Z             {
2026-06-21T23:05:52.8856048Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T23:05:52.8856180Z               "line": 66
2026-06-21T23:05:52.8856299Z             }
2026-06-21T23:05:52.8856417Z           ]
2026-06-21T23:05:52.8856544Z         },
2026-06-21T23:05:52.8856669Z         "unit": {
2026-06-21T23:05:52.8856812Z           "complete": true,
2026-06-21T23:05:52.8856955Z           "evidence": [
2026-06-21T23:05:52.8857085Z             {
2026-06-21T23:05:52.8857251Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T23:05:52.8857384Z               "line": 186
2026-06-21T23:05:52.8857517Z             },
2026-06-21T23:05:52.8857642Z             {
2026-06-21T23:05:52.8857808Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T23:05:52.8857933Z               "line": 238
2026-06-21T23:05:52.8858066Z             },
2026-06-21T23:05:52.8858195Z             {
2026-06-21T23:05:52.8858347Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T23:05:52.8858481Z               "line": 266
2026-06-21T23:05:52.8858592Z             }
2026-06-21T23:05:52.8858724Z           ]
2026-06-21T23:05:52.8858845Z         }
2026-06-21T23:05:52.8859052Z       }
2026-06-21T23:05:52.8859185Z     },
2026-06-21T23:05:52.8859297Z     {
2026-06-21T23:05:52.8859481Z       "id": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
2026-06-21T23:05:52.8866045Z       "title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output gap must RESUME-FROM-FLOOR (re-subscribe from delivered_through and re-fetch the dropped frames from the ring), NOT snap-above and NOT fatal. ROOT (v0.13.0 forkpty re-run, post-keystone): b4 made the controller a non-blocking try_send that DROPS frames when its bounded channel fills (a controller that falls behind its OWN echo under a hard flood), so the next read is a forward gap the strict reject-gap (brain.rs:624/628, B2 exactly-once) FATALS — wedged_viewer_does_not_stall_controller (attach.rs:1048) drove ctrl.read_event() raw and fataled on `output gap got 6134 want 4643`. Pre-b4 the inline sleep-poll BLOCKED the drain to the controller's rate (no drops, no gaps); this is a b4 SIDE-EFFECT, not a new class. A controller CANNOT snap (it is authoritative — advances delivered_through; skipping rolled frames = not-exactly-once = B2 violation), so REQ-HAZARD-VIEWER-RING-ROLL-SNAP does NOT apply. B2 INVARIANT (doyle, broker.rs:327-330): the ring trim is delivered_through-BLIND (`while ring.len() > cap_chunks { pop_front() }`), so re-fetch is exactly-once IFF tail - delivered_through <= cap_chunks (4096) — NOT guaranteed in general, but the common case (burst < ring; wedged_viewer ~1492 < 4096) holds. FIX: serve_attach catches the output-gap on the controller path (does not ?-propagate) and re-subscribes from Brain::controller_resume_floor (= delivered_through = the gap's `want`; NO mid-stream KIND_SESSIONS round-trip — sessions() loops on read_event and would re-fatal on the same gap + discard Output); the broker replays the dropped frames. The IRRECOVERABLE edge (floor unchanged across two resumes = ring rolled past delivered_through = frames gone) surfaces a MARKED truncation to the operator (never silent-skip = B2 lie, never spin) and ends cleanly — full graceful handling deferred to REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND. Do NOT make the ring trim delivered_through-aware (that risks an unbounded ring under a stuck controller; the 5s eviction + 4096 ring is the practical bound). (v0.13.0)",
2026-06-21T23:05:52.8866412Z       "requiredStages": [
2026-06-21T23:05:52.8866646Z         "impl",
2026-06-21T23:05:52.8866778Z         "unit",
2026-06-21T23:05:52.8866893Z         "int"
2026-06-21T23:05:52.8867010Z       ],
2026-06-21T23:05:52.8867138Z       "stages": {
2026-06-21T23:05:52.8867268Z         "doc": {
2026-06-21T23:05:52.8867409Z           "complete": false,
2026-06-21T23:05:52.8867544Z           "evidence": []
2026-06-21T23:05:52.8867677Z         },
2026-06-21T23:05:52.8867806Z         "impl": {
2026-06-21T23:05:52.8867944Z           "complete": true,
2026-06-21T23:05:52.8868072Z           "evidence": [
2026-06-21T23:05:52.8868188Z             {
2026-06-21T23:05:52.8868363Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:52.8868498Z               "line": 109
2026-06-21T23:05:52.8868631Z             },
2026-06-21T23:05:52.8868750Z             {
2026-06-21T23:05:52.8868917Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:52.8869171Z               "line": 156
2026-06-21T23:05:52.8869313Z             },
2026-06-21T23:05:52.8869438Z             {
2026-06-21T23:05:52.8869607Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:52.8869746Z               "line": 261
2026-06-21T23:05:52.8869871Z             },
2026-06-21T23:05:52.8869998Z             {
2026-06-21T23:05:52.8870170Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.8870303Z               "line": 954
2026-06-21T23:05:52.8870433Z             }
2026-06-21T23:05:52.8870552Z           ]
2026-06-21T23:05:52.8870675Z         },
2026-06-21T23:05:52.8870804Z         "int": {
2026-06-21T23:05:52.8870947Z           "complete": true,
2026-06-21T23:05:52.8871082Z           "evidence": [
2026-06-21T23:05:52.8871205Z             {
2026-06-21T23:05:52.8871377Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:52.8871509Z               "line": 1051
2026-06-21T23:05:52.8871644Z             }
2026-06-21T23:05:52.8871763Z           ]
2026-06-21T23:05:52.8871890Z         },
2026-06-21T23:05:52.8872019Z         "unit": {
2026-06-21T23:05:52.8872155Z           "complete": true,
2026-06-21T23:05:52.8872284Z           "evidence": [
2026-06-21T23:05:52.8872414Z             {
2026-06-21T23:05:52.8872584Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.8872718Z               "line": 1498
2026-06-21T23:05:52.8872841Z             }
2026-06-21T23:05:52.8872971Z           ]
2026-06-21T23:05:52.8873090Z         }
2026-06-21T23:05:52.8873218Z       }
2026-06-21T23:05:52.8873343Z     },
2026-06-21T23:05:52.8873475Z     {
2026-06-21T23:05:52.8873667Z       "id": "REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND",
2026-06-21T23:05:52.8876525Z       "title": "DEFERRED EDGE of REQ-HAZARD-CONTROLLER-GAP-RESUME: when a serving controller falls behind the live ring FURTHER than the ring holds (tail - delivered_through > cap_chunks, the ring trim being delivered_through-blind, broker.rs:327-330), the dropped frames have rolled OUT of the ring and an exactly-once re-fetch is IMPOSSIBLE. v0.13.0 DETECTS this (resume floor unchanged across two consecutive resumes) and surfaces a MARKED truncation notice to the operator then ends the attach cleanly — it never silent-skips (a B2 lie) and never spins. FULL graceful handling (a clearly-marked snap-with-data-loss that keeps the operator on the live tail, or a structured truncation record the rc renders distinctly, plus the controller-too-slow + ring-too-small backpressure/sizing policy) is DEFERRED — staging it needs a netsplit / deep-behind harness (the in-process loopback rig keeps up; wedged_viewer's gap is recoverable at ~1492 < 4096). (v0.13.0+)",
2026-06-21T23:05:52.8876705Z       "requiredStages": [],
2026-06-21T23:05:52.8876840Z       "stages": {
2026-06-21T23:05:52.8876962Z         "doc": {
2026-06-21T23:05:52.8877097Z           "complete": false,
2026-06-21T23:05:52.8877244Z           "evidence": []
2026-06-21T23:05:52.8877481Z         },
2026-06-21T23:05:52.8877613Z         "impl": {
2026-06-21T23:05:52.8877761Z           "complete": false,
2026-06-21T23:05:52.8877984Z           "evidence": []
2026-06-21T23:05:52.8878114Z         },
2026-06-21T23:05:52.8878242Z         "int": {
2026-06-21T23:05:52.8878386Z           "complete": false,
2026-06-21T23:05:52.8878519Z           "evidence": []
2026-06-21T23:05:52.8878642Z         },
2026-06-21T23:05:52.8878772Z         "unit": {
2026-06-21T23:05:52.8878905Z           "complete": false,
2026-06-21T23:05:52.8879120Z           "evidence": []
2026-06-21T23:05:52.8879239Z         }
2026-06-21T23:05:52.8879378Z       }
2026-06-21T23:05:52.8879496Z     },
2026-06-21T23:05:52.8879616Z     {
2026-06-21T23:05:52.8879787Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T23:05:52.8884026Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T23:05:52.8884250Z       "requiredStages": [],
2026-06-21T23:05:52.8884384Z       "stages": {
2026-06-21T23:05:52.8884519Z         "doc": {
2026-06-21T23:05:52.8884651Z           "complete": false,
2026-06-21T23:05:52.8884785Z           "evidence": []
2026-06-21T23:05:52.8884908Z         },
2026-06-21T23:05:52.8885038Z         "impl": {
2026-06-21T23:05:52.8885177Z           "complete": false,
2026-06-21T23:05:52.8885308Z           "evidence": []
2026-06-21T23:05:52.8885441Z         },
2026-06-21T23:05:52.8885563Z         "int": {
2026-06-21T23:05:52.8885711Z           "complete": false,
2026-06-21T23:05:52.8885840Z           "evidence": []
2026-06-21T23:05:52.8885973Z         },
2026-06-21T23:05:52.8886103Z         "unit": {
2026-06-21T23:05:52.8886249Z           "complete": false,
2026-06-21T23:05:52.8886384Z           "evidence": []
2026-06-21T23:05:52.8886513Z         }
2026-06-21T23:05:52.8886640Z       }
2026-06-21T23:05:52.8886765Z     },
2026-06-21T23:05:52.8886884Z     {
2026-06-21T23:05:52.8887067Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T23:05:52.8900969Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T23:05:52.8901626Z       "requiredStages": [
2026-06-21T23:05:52.8901818Z         "doc",
2026-06-21T23:05:52.8901950Z         "impl",
2026-06-21T23:05:52.8902080Z         "unit",
2026-06-21T23:05:52.8902209Z         "int"
2026-06-21T23:05:52.8902337Z       ],
2026-06-21T23:05:52.8902466Z       "stages": {
2026-06-21T23:05:52.8902594Z         "doc": {
2026-06-21T23:05:52.8902738Z           "complete": true,
2026-06-21T23:05:52.8902881Z           "evidence": [
2026-06-21T23:05:52.8903005Z             {
2026-06-21T23:05:52.8903176Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.8903315Z               "line": 468
2026-06-21T23:05:52.8903439Z             }
2026-06-21T23:05:52.8903566Z           ]
2026-06-21T23:05:52.8903695Z         },
2026-06-21T23:05:52.8903826Z         "impl": {
2026-06-21T23:05:52.8903964Z           "complete": true,
2026-06-21T23:05:52.8904108Z           "evidence": [
2026-06-21T23:05:52.8904235Z             {
2026-06-21T23:05:52.8904417Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.8904569Z               "line": 348
2026-06-21T23:05:52.8904699Z             },
2026-06-21T23:05:52.8904836Z             {
2026-06-21T23:05:52.8905009Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.8905156Z               "line": 1282
2026-06-21T23:05:52.8905290Z             },
2026-06-21T23:05:52.8905419Z             {
2026-06-21T23:05:52.8905596Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8905733Z               "line": 836
2026-06-21T23:05:52.8905867Z             }
2026-06-21T23:05:52.8905991Z           ]
2026-06-21T23:05:52.8906124Z         },
2026-06-21T23:05:52.8906244Z         "int": {
2026-06-21T23:05:52.8906386Z           "complete": true,
2026-06-21T23:05:52.8906524Z           "evidence": [
2026-06-21T23:05:52.8906642Z             {
2026-06-21T23:05:52.8906816Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:52.8906970Z               "line": 1180
2026-06-21T23:05:52.8907103Z             },
2026-06-21T23:05:52.8907238Z             {
2026-06-21T23:05:52.8907412Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:52.8907562Z               "line": 1281
2026-06-21T23:05:52.8907690Z             },
2026-06-21T23:05:52.8907819Z             {
2026-06-21T23:05:52.8907991Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:05:52.8908134Z               "line": 1169
2026-06-21T23:05:52.8908266Z             }
2026-06-21T23:05:52.8908391Z           ]
2026-06-21T23:05:52.8908520Z         },
2026-06-21T23:05:52.8908648Z         "unit": {
2026-06-21T23:05:52.8908797Z           "complete": true,
2026-06-21T23:05:52.8908929Z           "evidence": [
2026-06-21T23:05:52.8909152Z             {
2026-06-21T23:05:52.8909326Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8909460Z               "line": 3091
2026-06-21T23:05:52.8909589Z             }
2026-06-21T23:05:52.8909717Z           ]
2026-06-21T23:05:52.8909851Z         }
2026-06-21T23:05:52.8909975Z       }
2026-06-21T23:05:52.8910105Z     },
2026-06-21T23:05:52.8910232Z     {
2026-06-21T23:05:52.8910400Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T23:05:52.8910872Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T23:05:52.8911025Z       "requiredStages": [
2026-06-21T23:05:52.8911148Z         "impl",
2026-06-21T23:05:52.8911277Z         "unit",
2026-06-21T23:05:52.8911407Z         "int"
2026-06-21T23:05:52.8911534Z       ],
2026-06-21T23:05:52.8911674Z       "stages": {
2026-06-21T23:05:52.8911805Z         "doc": {
2026-06-21T23:05:52.8911953Z           "complete": false,
2026-06-21T23:05:52.8912087Z           "evidence": []
2026-06-21T23:05:52.8912219Z         },
2026-06-21T23:05:52.8912349Z         "impl": {
2026-06-21T23:05:52.8912482Z           "complete": true,
2026-06-21T23:05:52.8912726Z           "evidence": [
2026-06-21T23:05:52.8912859Z             {
2026-06-21T23:05:52.8913154Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8913289Z               "line": 178
2026-06-21T23:05:52.8913421Z             },
2026-06-21T23:05:52.8913556Z             {
2026-06-21T23:05:52.8913731Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8913880Z               "line": 226
2026-06-21T23:05:52.8914008Z             },
2026-06-21T23:05:52.8914140Z             {
2026-06-21T23:05:52.8914302Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:52.8914443Z               "line": 79
2026-06-21T23:05:52.8914568Z             },
2026-06-21T23:05:52.8914696Z             {
2026-06-21T23:05:52.8914853Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:05:52.8914978Z               "line": 52
2026-06-21T23:05:52.8915100Z             },
2026-06-21T23:05:52.8915231Z             {
2026-06-21T23:05:52.8915406Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.8915545Z               "line": 263
2026-06-21T23:05:52.8915678Z             },
2026-06-21T23:05:52.8915802Z             {
2026-06-21T23:05:52.8915979Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:05:52.8916117Z               "line": 27
2026-06-21T23:05:52.8916241Z             },
2026-06-21T23:05:52.8916374Z             {
2026-06-21T23:05:52.8916551Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:05:52.8916680Z               "line": 79
2026-06-21T23:05:52.8916810Z             },
2026-06-21T23:05:52.8916937Z             {
2026-06-21T23:05:52.8917108Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:05:52.8917253Z               "line": 102
2026-06-21T23:05:52.8917382Z             },
2026-06-21T23:05:52.8917507Z             {
2026-06-21T23:05:52.8917677Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.8917812Z               "line": 116
2026-06-21T23:05:52.8917944Z             }
2026-06-21T23:05:52.8918079Z           ]
2026-06-21T23:05:52.8918203Z         },
2026-06-21T23:05:52.8918331Z         "int": {
2026-06-21T23:05:52.8918479Z           "complete": true,
2026-06-21T23:05:52.8918612Z           "evidence": [
2026-06-21T23:05:52.8918742Z             {
2026-06-21T23:05:52.8918931Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T23:05:52.8919156Z               "line": 43
2026-06-21T23:05:52.8919270Z             }
2026-06-21T23:05:52.8919391Z           ]
2026-06-21T23:05:52.8919522Z         },
2026-06-21T23:05:52.8919651Z         "unit": {
2026-06-21T23:05:52.8919802Z           "complete": true,
2026-06-21T23:05:52.8919938Z           "evidence": [
2026-06-21T23:05:52.8920073Z             {
2026-06-21T23:05:52.8920258Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.8920397Z               "line": 678
2026-06-21T23:05:52.8920530Z             },
2026-06-21T23:05:52.8920660Z             {
2026-06-21T23:05:52.8920830Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.8920960Z               "line": 495
2026-06-21T23:05:52.8921093Z             },
2026-06-21T23:05:52.8921226Z             {
2026-06-21T23:05:52.8921398Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:05:52.8921536Z               "line": 124
2026-06-21T23:05:52.8921666Z             },
2026-06-21T23:05:52.8921793Z             {
2026-06-21T23:05:52.8921967Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:05:52.8922104Z               "line": 143
2026-06-21T23:05:52.8922234Z             },
2026-06-21T23:05:52.8922356Z             {
2026-06-21T23:05:52.8922527Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:05:52.8922657Z               "line": 160
2026-06-21T23:05:52.8922785Z             },
2026-06-21T23:05:52.8922905Z             {
2026-06-21T23:05:52.8923085Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:05:52.8923333Z               "line": 187
2026-06-21T23:05:52.8923457Z             },
2026-06-21T23:05:52.8923591Z             {
2026-06-21T23:05:52.8923859Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:05:52.8923996Z               "line": 206
2026-06-21T23:05:52.8924121Z             },
2026-06-21T23:05:52.8924253Z             {
2026-06-21T23:05:52.8924425Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.8924554Z               "line": 229
2026-06-21T23:05:52.8924691Z             }
2026-06-21T23:05:52.8924815Z           ]
2026-06-21T23:05:52.8924951Z         }
2026-06-21T23:05:52.8925075Z       }
2026-06-21T23:05:52.8925205Z     },
2026-06-21T23:05:52.8925332Z     {
2026-06-21T23:05:52.8925510Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T23:05:52.8926215Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T23:05:52.8926363Z       "requiredStages": [
2026-06-21T23:05:52.8926505Z         "impl",
2026-06-21T23:05:52.8926629Z         "unit"
2026-06-21T23:05:52.8926745Z       ],
2026-06-21T23:05:52.8926872Z       "stages": {
2026-06-21T23:05:52.8927002Z         "doc": {
2026-06-21T23:05:52.8927153Z           "complete": false,
2026-06-21T23:05:52.8927293Z           "evidence": []
2026-06-21T23:05:52.8927426Z         },
2026-06-21T23:05:52.8927577Z         "impl": {
2026-06-21T23:05:52.8927725Z           "complete": true,
2026-06-21T23:05:52.8927866Z           "evidence": [
2026-06-21T23:05:52.8927995Z             {
2026-06-21T23:05:52.8928171Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8928305Z               "line": 1300
2026-06-21T23:05:52.8928443Z             },
2026-06-21T23:05:52.8928576Z             {
2026-06-21T23:05:52.8928743Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.8928886Z               "line": 1556
2026-06-21T23:05:52.8929081Z             }
2026-06-21T23:05:52.8929215Z           ]
2026-06-21T23:05:52.8929335Z         },
2026-06-21T23:05:52.8929482Z         "int": {
2026-06-21T23:05:52.8929631Z           "complete": false,
2026-06-21T23:05:52.8929768Z           "evidence": []
2026-06-21T23:05:52.8929889Z         },
2026-06-21T23:05:52.8930021Z         "unit": {
2026-06-21T23:05:52.8930168Z           "complete": true,
2026-06-21T23:05:52.8930296Z           "evidence": [
2026-06-21T23:05:52.8930423Z             {
2026-06-21T23:05:52.8930610Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T23:05:52.8930737Z               "line": 161
2026-06-21T23:05:52.8930876Z             }
2026-06-21T23:05:52.8931001Z           ]
2026-06-21T23:05:52.8931133Z         }
2026-06-21T23:05:52.8931258Z       }
2026-06-21T23:05:52.8931386Z     },
2026-06-21T23:05:52.8931511Z     {
2026-06-21T23:05:52.8931678Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T23:05:52.8933484Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T23:05:52.8933669Z       "requiredStages": [
2026-06-21T23:05:52.8933817Z         "impl",
2026-06-21T23:05:52.8933950Z         "unit"
2026-06-21T23:05:52.8934080Z       ],
2026-06-21T23:05:52.8934218Z       "stages": {
2026-06-21T23:05:52.8934336Z         "doc": {
2026-06-21T23:05:52.8934484Z           "complete": false,
2026-06-21T23:05:52.8934627Z           "evidence": []
2026-06-21T23:05:52.8934904Z         },
2026-06-21T23:05:52.8935034Z         "impl": {
2026-06-21T23:05:52.8935275Z           "complete": true,
2026-06-21T23:05:52.8935404Z           "evidence": [
2026-06-21T23:05:52.8935530Z             {
2026-06-21T23:05:52.8935712Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:05:52.8935854Z               "line": 257
2026-06-21T23:05:52.8935978Z             }
2026-06-21T23:05:52.8936112Z           ]
2026-06-21T23:05:52.8936240Z         },
2026-06-21T23:05:52.8936379Z         "int": {
2026-06-21T23:05:52.8936517Z           "complete": false,
2026-06-21T23:05:52.8936661Z           "evidence": []
2026-06-21T23:05:52.8936793Z         },
2026-06-21T23:05:52.8936918Z         "unit": {
2026-06-21T23:05:52.8937051Z           "complete": true,
2026-06-21T23:05:52.8937189Z           "evidence": [
2026-06-21T23:05:52.8937324Z             {
2026-06-21T23:05:52.8937499Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:05:52.8937657Z               "line": 360
2026-06-21T23:05:52.8937790Z             }
2026-06-21T23:05:52.8937921Z           ]
2026-06-21T23:05:52.8938052Z         }
2026-06-21T23:05:52.8938180Z       }
2026-06-21T23:05:52.8938308Z     },
2026-06-21T23:05:52.8938421Z     {
2026-06-21T23:05:52.8938593Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T23:05:52.8940520Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T23:05:52.8940690Z       "requiredStages": [
2026-06-21T23:05:52.8940828Z         "impl",
2026-06-21T23:05:52.8940955Z         "unit"
2026-06-21T23:05:52.8941078Z       ],
2026-06-21T23:05:52.8941208Z       "stages": {
2026-06-21T23:05:52.8941326Z         "doc": {
2026-06-21T23:05:52.8941480Z           "complete": false,
2026-06-21T23:05:52.8941617Z           "evidence": []
2026-06-21T23:05:52.8941752Z         },
2026-06-21T23:05:52.8941870Z         "impl": {
2026-06-21T23:05:52.8942013Z           "complete": true,
2026-06-21T23:05:52.8942157Z           "evidence": [
2026-06-21T23:05:52.8942284Z             {
2026-06-21T23:05:52.8942462Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.8942604Z               "line": 1018
2026-06-21T23:05:52.8942739Z             },
2026-06-21T23:05:52.8942871Z             {
2026-06-21T23:05:52.8943044Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8943195Z               "line": 283
2026-06-21T23:05:52.8943321Z             },
2026-06-21T23:05:52.8943453Z             {
2026-06-21T23:05:52.8943628Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8943778Z               "line": 316
2026-06-21T23:05:52.8943905Z             },
2026-06-21T23:05:52.8944030Z             {
2026-06-21T23:05:52.8944205Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T23:05:52.8944330Z               "line": 26
2026-06-21T23:05:52.8944464Z             }
2026-06-21T23:05:52.8944592Z           ]
2026-06-21T23:05:52.8944725Z         },
2026-06-21T23:05:52.8944853Z         "int": {
2026-06-21T23:05:52.8944989Z           "complete": false,
2026-06-21T23:05:52.8945126Z           "evidence": []
2026-06-21T23:05:52.8945256Z         },
2026-06-21T23:05:52.8945388Z         "unit": {
2026-06-21T23:05:52.8945527Z           "complete": true,
2026-06-21T23:05:52.8945665Z           "evidence": [
2026-06-21T23:05:52.8945797Z             {
2026-06-21T23:05:52.8945964Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T23:05:52.8946243Z               "line": 271
2026-06-21T23:05:52.8946372Z             },
2026-06-21T23:05:52.8946505Z             {
2026-06-21T23:05:52.8946757Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T23:05:52.8946907Z               "line": 348
2026-06-21T23:05:52.8947020Z             }
2026-06-21T23:05:52.8947149Z           ]
2026-06-21T23:05:52.8947282Z         }
2026-06-21T23:05:52.8947401Z       }
2026-06-21T23:05:52.8947517Z     },
2026-06-21T23:05:52.8947650Z     {
2026-06-21T23:05:52.8947803Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T23:05:52.8948055Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T23:05:52.8948199Z       "requiredStages": [
2026-06-21T23:05:52.8948331Z         "impl",
2026-06-21T23:05:52.8948461Z         "unit"
2026-06-21T23:05:52.8948588Z       ],
2026-06-21T23:05:52.8948721Z       "stages": {
2026-06-21T23:05:52.8948855Z         "doc": {
2026-06-21T23:05:52.8949052Z           "complete": false,
2026-06-21T23:05:52.8949192Z           "evidence": []
2026-06-21T23:05:52.8949324Z         },
2026-06-21T23:05:52.8949459Z         "impl": {
2026-06-21T23:05:52.8949615Z           "complete": true,
2026-06-21T23:05:52.8949740Z           "evidence": [
2026-06-21T23:05:52.8949874Z             {
2026-06-21T23:05:52.8950040Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.8950173Z               "line": 40
2026-06-21T23:05:52.8950307Z             },
2026-06-21T23:05:52.8950436Z             {
2026-06-21T23:05:52.8950602Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.8950733Z               "line": 103
2026-06-21T23:05:52.8950869Z             },
2026-06-21T23:05:52.8951004Z             {
2026-06-21T23:05:52.8951160Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.8951302Z               "line": 218
2026-06-21T23:05:52.8951430Z             },
2026-06-21T23:05:52.8951566Z             {
2026-06-21T23:05:52.8951735Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.8951881Z               "line": 323
2026-06-21T23:05:52.8952002Z             }
2026-06-21T23:05:52.8952135Z           ]
2026-06-21T23:05:52.8952268Z         },
2026-06-21T23:05:52.8952397Z         "int": {
2026-06-21T23:05:52.8952534Z           "complete": false,
2026-06-21T23:05:52.8952669Z           "evidence": []
2026-06-21T23:05:52.8952802Z         },
2026-06-21T23:05:52.8952926Z         "unit": {
2026-06-21T23:05:52.8953069Z           "complete": true,
2026-06-21T23:05:52.8953202Z           "evidence": [
2026-06-21T23:05:52.8953327Z             {
2026-06-21T23:05:52.8953493Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.8953628Z               "line": 361
2026-06-21T23:05:52.8953750Z             },
2026-06-21T23:05:52.8953881Z             {
2026-06-21T23:05:52.8954046Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.8954183Z               "line": 433
2026-06-21T23:05:52.8954313Z             },
2026-06-21T23:05:52.8954455Z             {
2026-06-21T23:05:52.8954623Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.8954760Z               "line": 496
2026-06-21T23:05:52.8954895Z             },
2026-06-21T23:05:52.8955014Z             {
2026-06-21T23:05:52.8955181Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.8955314Z               "line": 517
2026-06-21T23:05:52.8955442Z             }
2026-06-21T23:05:52.8955563Z           ]
2026-06-21T23:05:52.8955696Z         }
2026-06-21T23:05:52.8955830Z       }
2026-06-21T23:05:52.8955957Z     },
2026-06-21T23:05:52.8956092Z     {
2026-06-21T23:05:52.8956245Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T23:05:52.8958605Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T23:05:52.8959084Z       "requiredStages": [
2026-06-21T23:05:52.8959215Z         "impl",
2026-06-21T23:05:52.8959353Z         "unit"
2026-06-21T23:05:52.8959484Z       ],
2026-06-21T23:05:52.8959612Z       "stages": {
2026-06-21T23:05:52.8959747Z         "doc": {
2026-06-21T23:05:52.8959889Z           "complete": false,
2026-06-21T23:05:52.8960033Z           "evidence": []
2026-06-21T23:05:52.8960156Z         },
2026-06-21T23:05:52.8960290Z         "impl": {
2026-06-21T23:05:52.8960434Z           "complete": true,
2026-06-21T23:05:52.8960576Z           "evidence": [
2026-06-21T23:05:52.8960705Z             {
2026-06-21T23:05:52.8960881Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:52.8961025Z               "line": 402
2026-06-21T23:05:52.8961143Z             },
2026-06-21T23:05:52.8961273Z             {
2026-06-21T23:05:52.8961444Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:52.8961583Z               "line": 446
2026-06-21T23:05:52.8961720Z             }
2026-06-21T23:05:52.8961843Z           ]
2026-06-21T23:05:52.8961972Z         },
2026-06-21T23:05:52.8962094Z         "int": {
2026-06-21T23:05:52.8962242Z           "complete": false,
2026-06-21T23:05:52.8962389Z           "evidence": []
2026-06-21T23:05:52.8962518Z         },
2026-06-21T23:05:52.8962652Z         "unit": {
2026-06-21T23:05:52.8962789Z           "complete": true,
2026-06-21T23:05:52.8962928Z           "evidence": [
2026-06-21T23:05:52.8963052Z             {
2026-06-21T23:05:52.8963234Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:52.8963372Z               "line": 910
2026-06-21T23:05:52.8963506Z             }
2026-06-21T23:05:52.8966861Z           ]
2026-06-21T23:05:52.8967022Z         }
2026-06-21T23:05:52.8967150Z       }
2026-06-21T23:05:52.8967258Z     },
2026-06-21T23:05:52.8967382Z     {
2026-06-21T23:05:52.8967558Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T23:05:52.8967750Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T23:05:52.8967897Z       "requiredStages": [
2026-06-21T23:05:52.8968022Z         "impl",
2026-06-21T23:05:52.8968150Z         "unit"
2026-06-21T23:05:52.8968279Z       ],
2026-06-21T23:05:52.8968408Z       "stages": {
2026-06-21T23:05:52.8968535Z         "doc": {
2026-06-21T23:05:52.8968670Z           "complete": false,
2026-06-21T23:05:52.8968803Z           "evidence": []
2026-06-21T23:05:52.8968933Z         },
2026-06-21T23:05:52.8969179Z         "impl": {
2026-06-21T23:05:52.8969319Z           "complete": true,
2026-06-21T23:05:52.8969499Z           "evidence": [
2026-06-21T23:05:52.8969620Z             {
2026-06-21T23:05:52.8969794Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.8969927Z               "line": 116
2026-06-21T23:05:52.8970054Z             },
2026-06-21T23:05:52.8970182Z             {
2026-06-21T23:05:52.8970351Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.8970487Z               "line": 211
2026-06-21T23:05:52.8970617Z             }
2026-06-21T23:05:52.8970740Z           ]
2026-06-21T23:05:52.8970870Z         },
2026-06-21T23:05:52.8970989Z         "int": {
2026-06-21T23:05:52.8971131Z           "complete": false,
2026-06-21T23:05:52.8971252Z           "evidence": []
2026-06-21T23:05:52.8971384Z         },
2026-06-21T23:05:52.8971504Z         "unit": {
2026-06-21T23:05:52.8971651Z           "complete": true,
2026-06-21T23:05:52.8971785Z           "evidence": [
2026-06-21T23:05:52.8971914Z             {
2026-06-21T23:05:52.8972238Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.8972370Z               "line": 388
2026-06-21T23:05:52.8972597Z             },
2026-06-21T23:05:52.8972729Z             {
2026-06-21T23:05:52.8972884Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.8973030Z               "line": 469
2026-06-21T23:05:52.8973151Z             }
2026-06-21T23:05:52.8973274Z           ]
2026-06-21T23:05:52.8973398Z         }
2026-06-21T23:05:52.8973527Z       }
2026-06-21T23:05:52.8973650Z     },
2026-06-21T23:05:52.8973771Z     {
2026-06-21T23:05:52.8973955Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T23:05:52.8975129Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T23:05:52.8975284Z       "requiredStages": [
2026-06-21T23:05:52.8975415Z         "impl",
2026-06-21T23:05:52.8975542Z         "unit"
2026-06-21T23:05:52.8975662Z       ],
2026-06-21T23:05:52.8975796Z       "stages": {
2026-06-21T23:05:52.8975928Z         "doc": {
2026-06-21T23:05:52.8976063Z           "complete": true,
2026-06-21T23:05:52.8976196Z           "evidence": [
2026-06-21T23:05:52.8976330Z             {
2026-06-21T23:05:52.8976487Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.8976626Z               "line": 206
2026-06-21T23:05:52.8976749Z             }
2026-06-21T23:05:52.8976887Z           ]
2026-06-21T23:05:52.8977012Z         },
2026-06-21T23:05:52.8977149Z         "impl": {
2026-06-21T23:05:52.8977298Z           "complete": true,
2026-06-21T23:05:52.8977426Z           "evidence": [
2026-06-21T23:05:52.8977553Z             {
2026-06-21T23:05:52.8977724Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8977875Z               "line": 691
2026-06-21T23:05:52.8977995Z             },
2026-06-21T23:05:52.8978128Z             {
2026-06-21T23:05:52.8978310Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8978442Z               "line": 791
2026-06-21T23:05:52.8978568Z             },
2026-06-21T23:05:52.8978691Z             {
2026-06-21T23:05:52.8978869Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8979077Z               "line": 1120
2026-06-21T23:05:52.8979197Z             },
2026-06-21T23:05:52.8979320Z             {
2026-06-21T23:05:52.8979503Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:52.8979644Z               "line": 184
2026-06-21T23:05:52.8979769Z             }
2026-06-21T23:05:52.8979894Z           ]
2026-06-21T23:05:52.8980022Z         },
2026-06-21T23:05:52.8980147Z         "int": {
2026-06-21T23:05:52.8980288Z           "complete": false,
2026-06-21T23:05:52.8980411Z           "evidence": []
2026-06-21T23:05:52.8980554Z         },
2026-06-21T23:05:52.8980680Z         "unit": {
2026-06-21T23:05:52.8980824Z           "complete": true,
2026-06-21T23:05:52.8980962Z           "evidence": [
2026-06-21T23:05:52.8981091Z             {
2026-06-21T23:05:52.8981263Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.8981401Z               "line": 1169
2026-06-21T23:05:52.8981534Z             },
2026-06-21T23:05:52.8981662Z             {
2026-06-21T23:05:52.8981840Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T23:05:52.8981968Z               "line": 44
2026-06-21T23:05:52.8982098Z             },
2026-06-21T23:05:52.8982225Z             {
2026-06-21T23:05:52.8982403Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T23:05:52.8982535Z               "line": 52
2026-06-21T23:05:52.8982665Z             },
2026-06-21T23:05:52.8982794Z             {
2026-06-21T23:05:52.8982954Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T23:05:52.8983209Z               "line": 57
2026-06-21T23:05:52.8983338Z             },
2026-06-21T23:05:52.8983459Z             {
2026-06-21T23:05:52.8983763Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T23:05:52.8983896Z               "line": 54
2026-06-21T23:05:52.8984026Z             }
2026-06-21T23:05:52.8984149Z           ]
2026-06-21T23:05:52.8984278Z         }
2026-06-21T23:05:52.8984406Z       }
2026-06-21T23:05:52.8984530Z     },
2026-06-21T23:05:52.8984660Z     {
2026-06-21T23:05:52.8984825Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T23:05:52.8985097Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T23:05:52.8985242Z       "requiredStages": [
2026-06-21T23:05:52.8985365Z         "impl",
2026-06-21T23:05:52.8985493Z         "unit"
2026-06-21T23:05:52.8985609Z       ],
2026-06-21T23:05:52.8985745Z       "stages": {
2026-06-21T23:05:52.8985883Z         "doc": {
2026-06-21T23:05:52.8986027Z           "complete": false,
2026-06-21T23:05:52.8986174Z           "evidence": []
2026-06-21T23:05:52.8986304Z         },
2026-06-21T23:05:52.8986436Z         "impl": {
2026-06-21T23:05:52.8986580Z           "complete": true,
2026-06-21T23:05:52.8986718Z           "evidence": [
2026-06-21T23:05:52.8986828Z             {
2026-06-21T23:05:52.8987004Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:05:52.8987137Z               "line": 26
2026-06-21T23:05:52.8987276Z             },
2026-06-21T23:05:52.8987409Z             {
2026-06-21T23:05:52.8987572Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:05:52.8987705Z               "line": 135
2026-06-21T23:05:52.8987830Z             },
2026-06-21T23:05:52.8987967Z             {
2026-06-21T23:05:52.8988147Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T23:05:52.8988279Z               "line": 26
2026-06-21T23:05:52.8988407Z             },
2026-06-21T23:05:52.8988532Z             {
2026-06-21T23:05:52.8988707Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T23:05:52.8988847Z               "line": 237
2026-06-21T23:05:52.8989065Z             }
2026-06-21T23:05:52.8989190Z           ]
2026-06-21T23:05:52.8989318Z         },
2026-06-21T23:05:52.8989443Z         "int": {
2026-06-21T23:05:52.8989585Z           "complete": false,
2026-06-21T23:05:52.8989723Z           "evidence": []
2026-06-21T23:05:52.8989852Z         },
2026-06-21T23:05:52.8989980Z         "unit": {
2026-06-21T23:05:52.8990115Z           "complete": true,
2026-06-21T23:05:52.8990258Z           "evidence": [
2026-06-21T23:05:52.8990387Z             {
2026-06-21T23:05:52.8990548Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:05:52.8990692Z               "line": 161
2026-06-21T23:05:52.8990820Z             },
2026-06-21T23:05:52.8990957Z             {
2026-06-21T23:05:52.8991123Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:05:52.8991250Z               "line": 170
2026-06-21T23:05:52.8991379Z             },
2026-06-21T23:05:52.8991508Z             {
2026-06-21T23:05:52.8991680Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:05:52.8991818Z               "line": 179
2026-06-21T23:05:52.8991951Z             },
2026-06-21T23:05:52.8992085Z             {
2026-06-21T23:05:52.8992252Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:05:52.8992405Z               "line": 190
2026-06-21T23:05:52.8992533Z             },
2026-06-21T23:05:52.8992663Z             {
2026-06-21T23:05:52.8992819Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:05:52.8992958Z               "line": 199
2026-06-21T23:05:52.8993086Z             },
2026-06-21T23:05:52.8993201Z             {
2026-06-21T23:05:52.8993368Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:05:52.8993505Z               "line": 216
2026-06-21T23:05:52.8993633Z             },
2026-06-21T23:05:52.8993760Z             {
2026-06-21T23:05:52.8993927Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:05:52.8994174Z               "line": 242
2026-06-21T23:05:52.8994304Z             },
2026-06-21T23:05:52.8994523Z             {
2026-06-21T23:05:52.8994690Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:05:52.8994828Z               "line": 295
2026-06-21T23:05:52.8994948Z             },
2026-06-21T23:05:52.8995080Z             {
2026-06-21T23:05:52.8995253Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:05:52.8995385Z               "line": 244
2026-06-21T23:05:52.8995516Z             },
2026-06-21T23:05:52.8995638Z             {
2026-06-21T23:05:52.8995812Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T23:05:52.8995944Z               "line": 265
2026-06-21T23:05:52.8996078Z             },
2026-06-21T23:05:52.8996208Z             {
2026-06-21T23:05:52.8996386Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T23:05:52.8996530Z               "line": 293
2026-06-21T23:05:52.8996658Z             },
2026-06-21T23:05:52.8996792Z             {
2026-06-21T23:05:52.8996967Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T23:05:52.8997112Z               "line": 317
2026-06-21T23:05:52.8997236Z             },
2026-06-21T23:05:52.8997363Z             {
2026-06-21T23:05:52.8997540Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T23:05:52.8997669Z               "line": 327
2026-06-21T23:05:52.8997803Z             },
2026-06-21T23:05:52.8997931Z             {
2026-06-21T23:05:52.8998109Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:05:52.8998246Z               "line": 540
2026-06-21T23:05:52.8998366Z             }
2026-06-21T23:05:52.8998493Z           ]
2026-06-21T23:05:52.8998621Z         }
2026-06-21T23:05:52.8998750Z       }
2026-06-21T23:05:52.8998867Z     },
2026-06-21T23:05:52.8999058Z     {
2026-06-21T23:05:52.8999239Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T23:05:52.9004008Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T23:05:52.9004236Z       "requiredStages": [],
2026-06-21T23:05:52.9004367Z       "stages": {
2026-06-21T23:05:52.9004496Z         "doc": {
2026-06-21T23:05:52.9004635Z           "complete": false,
2026-06-21T23:05:52.9004768Z           "evidence": []
2026-06-21T23:05:52.9004883Z         },
2026-06-21T23:05:52.9005016Z         "impl": {
2026-06-21T23:05:52.9005160Z           "complete": false,
2026-06-21T23:05:52.9005403Z           "evidence": []
2026-06-21T23:05:52.9005531Z         },
2026-06-21T23:05:52.9005655Z         "int": {
2026-06-21T23:05:52.9005899Z           "complete": false,
2026-06-21T23:05:52.9006037Z           "evidence": []
2026-06-21T23:05:52.9006170Z         },
2026-06-21T23:05:52.9006304Z         "unit": {
2026-06-21T23:05:52.9006443Z           "complete": false,
2026-06-21T23:05:52.9006580Z           "evidence": []
2026-06-21T23:05:52.9006706Z         }
2026-06-21T23:05:52.9006828Z       }
2026-06-21T23:05:52.9006946Z     },
2026-06-21T23:05:52.9007071Z     {
2026-06-21T23:05:52.9007242Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T23:05:52.9008815Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T23:05:52.9009072Z       "requiredStages": [
2026-06-21T23:05:52.9009205Z         "impl",
2026-06-21T23:05:52.9009339Z         "unit",
2026-06-21T23:05:52.9009475Z         "int"
2026-06-21T23:05:52.9009594Z       ],
2026-06-21T23:05:52.9009719Z       "stages": {
2026-06-21T23:05:52.9009846Z         "doc": {
2026-06-21T23:05:52.9009986Z           "complete": false,
2026-06-21T23:05:52.9010123Z           "evidence": []
2026-06-21T23:05:52.9010253Z         },
2026-06-21T23:05:52.9010385Z         "impl": {
2026-06-21T23:05:52.9010510Z           "complete": true,
2026-06-21T23:05:52.9010643Z           "evidence": [
2026-06-21T23:05:52.9010767Z             {
2026-06-21T23:05:52.9010953Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9011091Z               "line": 538
2026-06-21T23:05:52.9011212Z             },
2026-06-21T23:05:52.9011339Z             {
2026-06-21T23:05:52.9011503Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.9011649Z               "line": 641
2026-06-21T23:05:52.9011769Z             },
2026-06-21T23:05:52.9011903Z             {
2026-06-21T23:05:52.9012106Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T23:05:52.9012238Z               "line": 21
2026-06-21T23:05:52.9012361Z             }
2026-06-21T23:05:52.9012490Z           ]
2026-06-21T23:05:52.9012614Z         },
2026-06-21T23:05:52.9012738Z         "int": {
2026-06-21T23:05:52.9012881Z           "complete": true,
2026-06-21T23:05:52.9013014Z           "evidence": [
2026-06-21T23:05:52.9013139Z             {
2026-06-21T23:05:52.9013343Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T23:05:52.9013477Z               "line": 236
2026-06-21T23:05:52.9013610Z             },
2026-06-21T23:05:52.9013735Z             {
2026-06-21T23:05:52.9013939Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T23:05:52.9014089Z               "line": 396
2026-06-21T23:05:52.9014211Z             },
2026-06-21T23:05:52.9014336Z             {
2026-06-21T23:05:52.9014535Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:05:52.9014677Z               "line": 1496
2026-06-21T23:05:52.9014796Z             },
2026-06-21T23:05:52.9014922Z             {
2026-06-21T23:05:52.9015119Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:05:52.9015256Z               "line": 1648
2026-06-21T23:05:52.9015382Z             }
2026-06-21T23:05:52.9015515Z           ]
2026-06-21T23:05:52.9015638Z         },
2026-06-21T23:05:52.9015763Z         "unit": {
2026-06-21T23:05:52.9015905Z           "complete": true,
2026-06-21T23:05:52.9016049Z           "evidence": [
2026-06-21T23:05:52.9016177Z             {
2026-06-21T23:05:52.9016359Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9016607Z               "line": 887
2026-06-21T23:05:52.9016745Z             }
2026-06-21T23:05:52.9016965Z           ]
2026-06-21T23:05:52.9017097Z         }
2026-06-21T23:05:52.9017227Z       }
2026-06-21T23:05:52.9017351Z     },
2026-06-21T23:05:52.9017468Z     {
2026-06-21T23:05:52.9017631Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T23:05:52.9017835Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T23:05:52.9017970Z       "requiredStages": [
2026-06-21T23:05:52.9018102Z         "impl",
2026-06-21T23:05:52.9018237Z         "unit"
2026-06-21T23:05:52.9018361Z       ],
2026-06-21T23:05:52.9018493Z       "stages": {
2026-06-21T23:05:52.9018623Z         "doc": {
2026-06-21T23:05:52.9018774Z           "complete": false,
2026-06-21T23:05:52.9018900Z           "evidence": []
2026-06-21T23:05:52.9019104Z         },
2026-06-21T23:05:52.9019229Z         "impl": {
2026-06-21T23:05:52.9019366Z           "complete": true,
2026-06-21T23:05:52.9019534Z           "evidence": [
2026-06-21T23:05:52.9019661Z             {
2026-06-21T23:05:52.9019837Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:05:52.9019969Z               "line": 25
2026-06-21T23:05:52.9020096Z             },
2026-06-21T23:05:52.9020222Z             {
2026-06-21T23:05:52.9020388Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:05:52.9020522Z               "line": 26
2026-06-21T23:05:52.9020645Z             },
2026-06-21T23:05:52.9020770Z             {
2026-06-21T23:05:52.9020918Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:05:52.9021055Z               "line": 159
2026-06-21T23:05:52.9021184Z             }
2026-06-21T23:05:52.9021312Z           ]
2026-06-21T23:05:52.9021443Z         },
2026-06-21T23:05:52.9021571Z         "int": {
2026-06-21T23:05:52.9021714Z           "complete": false,
2026-06-21T23:05:52.9021856Z           "evidence": []
2026-06-21T23:05:52.9021995Z         },
2026-06-21T23:05:52.9022134Z         "unit": {
2026-06-21T23:05:52.9022271Z           "complete": true,
2026-06-21T23:05:52.9022416Z           "evidence": [
2026-06-21T23:05:52.9022538Z             {
2026-06-21T23:05:52.9022709Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:05:52.9022850Z               "line": 188
2026-06-21T23:05:52.9022978Z             },
2026-06-21T23:05:52.9023098Z             {
2026-06-21T23:05:52.9023264Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:05:52.9023394Z               "line": 240
2026-06-21T23:05:52.9023522Z             },
2026-06-21T23:05:52.9023651Z             {
2026-06-21T23:05:52.9023818Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:05:52.9023952Z               "line": 186
2026-06-21T23:05:52.9024085Z             }
2026-06-21T23:05:52.9024209Z           ]
2026-06-21T23:05:52.9024339Z         }
2026-06-21T23:05:52.9024461Z       }
2026-06-21T23:05:52.9024591Z     },
2026-06-21T23:05:52.9024715Z     {
2026-06-21T23:05:52.9024881Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T23:05:52.9025095Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T23:05:52.9025237Z       "requiredStages": [
2026-06-21T23:05:52.9025365Z         "impl",
2026-06-21T23:05:52.9025497Z         "unit"
2026-06-21T23:05:52.9025622Z       ],
2026-06-21T23:05:52.9025750Z       "stages": {
2026-06-21T23:05:52.9025888Z         "doc": {
2026-06-21T23:05:52.9026037Z           "complete": false,
2026-06-21T23:05:52.9026174Z           "evidence": []
2026-06-21T23:05:52.9026304Z         },
2026-06-21T23:05:52.9026437Z         "impl": {
2026-06-21T23:05:52.9026585Z           "complete": true,
2026-06-21T23:05:52.9026723Z           "evidence": [
2026-06-21T23:05:52.9026852Z             {
2026-06-21T23:05:52.9027033Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:05:52.9027157Z               "line": 48
2026-06-21T23:05:52.9027295Z             },
2026-06-21T23:05:52.9027424Z             {
2026-06-21T23:05:52.9027706Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:05:52.9027836Z               "line": 55
2026-06-21T23:05:52.9028076Z             },
2026-06-21T23:05:52.9028211Z             {
2026-06-21T23:05:52.9028376Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:05:52.9028521Z               "line": 74
2026-06-21T23:05:52.9028648Z             },
2026-06-21T23:05:52.9028778Z             {
2026-06-21T23:05:52.9029020Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:05:52.9029164Z               "line": 91
2026-06-21T23:05:52.9029297Z             }
2026-06-21T23:05:52.9029422Z           ]
2026-06-21T23:05:52.9029540Z         },
2026-06-21T23:05:52.9029673Z         "int": {
2026-06-21T23:05:52.9029822Z           "complete": false,
2026-06-21T23:05:52.9029955Z           "evidence": []
2026-06-21T23:05:52.9030080Z         },
2026-06-21T23:05:52.9030216Z         "unit": {
2026-06-21T23:05:52.9030359Z           "complete": true,
2026-06-21T23:05:52.9030511Z           "evidence": [
2026-06-21T23:05:52.9030638Z             {
2026-06-21T23:05:52.9030806Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:05:52.9030948Z               "line": 149
2026-06-21T23:05:52.9031078Z             },
2026-06-21T23:05:52.9031205Z             {
2026-06-21T23:05:52.9031373Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:05:52.9031506Z               "line": 166
2026-06-21T23:05:52.9031625Z             },
2026-06-21T23:05:52.9031759Z             {
2026-06-21T23:05:52.9031916Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:05:52.9032055Z               "line": 176
2026-06-21T23:05:52.9032187Z             },
2026-06-21T23:05:52.9032313Z             {
2026-06-21T23:05:52.9032484Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:05:52.9032618Z               "line": 194
2026-06-21T23:05:52.9032755Z             },
2026-06-21T23:05:52.9032880Z             {
2026-06-21T23:05:52.9033051Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:05:52.9033197Z               "line": 207
2026-06-21T23:05:52.9033322Z             }
2026-06-21T23:05:52.9033458Z           ]
2026-06-21T23:05:52.9033586Z         }
2026-06-21T23:05:52.9033716Z       }
2026-06-21T23:05:52.9033839Z     },
2026-06-21T23:05:52.9033973Z     {
2026-06-21T23:05:52.9034149Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T23:05:52.9034397Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T23:05:52.9034550Z       "requiredStages": [
2026-06-21T23:05:52.9034678Z         "impl",
2026-06-21T23:05:52.9034816Z         "unit"
2026-06-21T23:05:52.9034941Z       ],
2026-06-21T23:05:52.9035079Z       "stages": {
2026-06-21T23:05:52.9035214Z         "doc": {
2026-06-21T23:05:52.9035345Z           "complete": false,
2026-06-21T23:05:52.9035485Z           "evidence": []
2026-06-21T23:05:52.9035608Z         },
2026-06-21T23:05:52.9035731Z         "impl": {
2026-06-21T23:05:52.9035865Z           "complete": true,
2026-06-21T23:05:52.9036005Z           "evidence": [
2026-06-21T23:05:52.9036143Z             {
2026-06-21T23:05:52.9036325Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9036463Z               "line": 466
2026-06-21T23:05:52.9036583Z             },
2026-06-21T23:05:52.9036706Z             {
2026-06-21T23:05:52.9036869Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:05:52.9037011Z               "line": 26
2026-06-21T23:05:52.9037141Z             }
2026-06-21T23:05:52.9037269Z           ]
2026-06-21T23:05:52.9037393Z         },
2026-06-21T23:05:52.9037522Z         "int": {
2026-06-21T23:05:52.9037674Z           "complete": false,
2026-06-21T23:05:52.9037799Z           "evidence": []
2026-06-21T23:05:52.9037927Z         },
2026-06-21T23:05:52.9038066Z         "unit": {
2026-06-21T23:05:52.9038198Z           "complete": true,
2026-06-21T23:05:52.9038343Z           "evidence": [
2026-06-21T23:05:52.9038466Z             {
2026-06-21T23:05:52.9038741Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:05:52.9038875Z               "line": 150
2026-06-21T23:05:52.9039171Z             },
2026-06-21T23:05:52.9039304Z             {
2026-06-21T23:05:52.9039495Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:05:52.9039624Z               "line": 208
2026-06-21T23:05:52.9039753Z             }
2026-06-21T23:05:52.9039881Z           ]
2026-06-21T23:05:52.9040001Z         }
2026-06-21T23:05:52.9040129Z       }
2026-06-21T23:05:52.9040258Z     },
2026-06-21T23:05:52.9040377Z     {
2026-06-21T23:05:52.9040553Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T23:05:52.9049665Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T23:05:52.9049974Z       "requiredStages": [
2026-06-21T23:05:52.9050117Z         "impl",
2026-06-21T23:05:52.9050237Z         "unit",
2026-06-21T23:05:52.9050369Z         "int"
2026-06-21T23:05:52.9050488Z       ],
2026-06-21T23:05:52.9050623Z       "stages": {
2026-06-21T23:05:52.9050872Z         "doc": {
2026-06-21T23:05:52.9051013Z           "complete": false,
2026-06-21T23:05:52.9051257Z           "evidence": []
2026-06-21T23:05:52.9051384Z         },
2026-06-21T23:05:52.9051508Z         "impl": {
2026-06-21T23:05:52.9051654Z           "complete": true,
2026-06-21T23:05:52.9051791Z           "evidence": [
2026-06-21T23:05:52.9051916Z             {
2026-06-21T23:05:52.9052087Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:05:52.9052227Z               "line": 99
2026-06-21T23:05:52.9052354Z             },
2026-06-21T23:05:52.9052475Z             {
2026-06-21T23:05:52.9052645Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:05:52.9052780Z               "line": 201
2026-06-21T23:05:52.9052908Z             }
2026-06-21T23:05:52.9053031Z           ]
2026-06-21T23:05:52.9053161Z         },
2026-06-21T23:05:52.9053289Z         "int": {
2026-06-21T23:05:52.9053433Z           "complete": true,
2026-06-21T23:05:52.9053565Z           "evidence": [
2026-06-21T23:05:52.9053695Z             {
2026-06-21T23:05:52.9053899Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:05:52.9054048Z               "line": 737
2026-06-21T23:05:52.9054176Z             }
2026-06-21T23:05:52.9054299Z           ]
2026-06-21T23:05:52.9054427Z         },
2026-06-21T23:05:52.9054559Z         "unit": {
2026-06-21T23:05:52.9054707Z           "complete": true,
2026-06-21T23:05:52.9054841Z           "evidence": [
2026-06-21T23:05:52.9054949Z             {
2026-06-21T23:05:52.9055131Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:05:52.9055269Z               "line": 517
2026-06-21T23:05:52.9055399Z             },
2026-06-21T23:05:52.9055522Z             {
2026-06-21T23:05:52.9055699Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:05:52.9055842Z               "line": 576
2026-06-21T23:05:52.9055961Z             }
2026-06-21T23:05:52.9056090Z           ]
2026-06-21T23:05:52.9056213Z         }
2026-06-21T23:05:52.9056348Z       }
2026-06-21T23:05:52.9056475Z     },
2026-06-21T23:05:52.9056606Z     {
2026-06-21T23:05:52.9056790Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T23:05:52.9058136Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T23:05:52.9058299Z       "requiredStages": [
2026-06-21T23:05:52.9058422Z         "doc",
2026-06-21T23:05:52.9058552Z         "impl",
2026-06-21T23:05:52.9058680Z         "unit"
2026-06-21T23:05:52.9058813Z       ],
2026-06-21T23:05:52.9059028Z       "stages": {
2026-06-21T23:05:52.9059163Z         "doc": {
2026-06-21T23:05:52.9059304Z           "complete": true,
2026-06-21T23:05:52.9059463Z           "evidence": [
2026-06-21T23:05:52.9059591Z             {
2026-06-21T23:05:52.9059756Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9059891Z               "line": 214
2026-06-21T23:05:52.9060023Z             }
2026-06-21T23:05:52.9060148Z           ]
2026-06-21T23:05:52.9060282Z         },
2026-06-21T23:05:52.9060414Z         "impl": {
2026-06-21T23:05:52.9060544Z           "complete": true,
2026-06-21T23:05:52.9060686Z           "evidence": [
2026-06-21T23:05:52.9060807Z             {
2026-06-21T23:05:52.9060982Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9061117Z               "line": 56
2026-06-21T23:05:52.9061249Z             },
2026-06-21T23:05:52.9061373Z             {
2026-06-21T23:05:52.9061545Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9061688Z               "line": 580
2026-06-21T23:05:52.9061817Z             },
2026-06-21T23:05:52.9061949Z             {
2026-06-21T23:05:52.9062238Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.9062385Z               "line": 36
2026-06-21T23:05:52.9062609Z             },
2026-06-21T23:05:52.9062729Z             {
2026-06-21T23:05:52.9062905Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.9063044Z               "line": 59
2026-06-21T23:05:52.9063177Z             },
2026-06-21T23:05:52.9063301Z             {
2026-06-21T23:05:52.9063468Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.9063611Z               "line": 83
2026-06-21T23:05:52.9063740Z             },
2026-06-21T23:05:52.9063868Z             {
2026-06-21T23:05:52.9064041Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.9064188Z               "line": 140
2026-06-21T23:05:52.9064313Z             },
2026-06-21T23:05:52.9064431Z             {
2026-06-21T23:05:52.9064608Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.9064746Z               "line": 159
2026-06-21T23:05:52.9064883Z             },
2026-06-21T23:05:52.9065011Z             {
2026-06-21T23:05:52.9065195Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.9065335Z               "line": 384
2026-06-21T23:05:52.9065462Z             },
2026-06-21T23:05:52.9065587Z             {
2026-06-21T23:05:52.9065758Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.9065907Z               "line": 535
2026-06-21T23:05:52.9066035Z             },
2026-06-21T23:05:52.9066168Z             {
2026-06-21T23:05:52.9066330Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.9066478Z               "line": 581
2026-06-21T23:05:52.9066603Z             },
2026-06-21T23:05:52.9066736Z             {
2026-06-21T23:05:52.9066903Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9067045Z               "line": 300
2026-06-21T23:05:52.9067161Z             },
2026-06-21T23:05:52.9067289Z             {
2026-06-21T23:05:52.9067454Z               "path": "crates/spt/src/main.rs",
2026-06-21T23:05:52.9067597Z               "line": 42
2026-06-21T23:05:52.9067728Z             }
2026-06-21T23:05:52.9067857Z           ]
2026-06-21T23:05:52.9067982Z         },
2026-06-21T23:05:52.9068110Z         "int": {
2026-06-21T23:05:52.9068253Z           "complete": false,
2026-06-21T23:05:52.9068391Z           "evidence": []
2026-06-21T23:05:52.9068516Z         },
2026-06-21T23:05:52.9068644Z         "unit": {
2026-06-21T23:05:52.9068793Z           "complete": true,
2026-06-21T23:05:52.9068920Z           "evidence": [
2026-06-21T23:05:52.9069122Z             {
2026-06-21T23:05:52.9069283Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.9069427Z               "line": 813
2026-06-21T23:05:52.9069559Z             },
2026-06-21T23:05:52.9069689Z             {
2026-06-21T23:05:52.9069874Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.9070004Z               "line": 854
2026-06-21T23:05:52.9070133Z             },
2026-06-21T23:05:52.9070264Z             {
2026-06-21T23:05:52.9070437Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.9070583Z               "line": 928
2026-06-21T23:05:52.9070708Z             }
2026-06-21T23:05:52.9070842Z           ]
2026-06-21T23:05:52.9070969Z         }
2026-06-21T23:05:52.9071099Z       }
2026-06-21T23:05:52.9071232Z     },
2026-06-21T23:05:52.9071357Z     {
2026-06-21T23:05:52.9071542Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T23:05:52.9076472Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T23:05:52.9076914Z       "requiredStages": [
2026-06-21T23:05:52.9077043Z         "impl",
2026-06-21T23:05:52.9077167Z         "unit",
2026-06-21T23:05:52.9077296Z         "int"
2026-06-21T23:05:52.9077421Z       ],
2026-06-21T23:05:52.9077553Z       "stages": {
2026-06-21T23:05:52.9077687Z         "doc": {
2026-06-21T23:05:52.9077835Z           "complete": false,
2026-06-21T23:05:52.9077976Z           "evidence": []
2026-06-21T23:05:52.9078105Z         },
2026-06-21T23:05:52.9078237Z         "impl": {
2026-06-21T23:05:52.9078380Z           "complete": true,
2026-06-21T23:05:52.9078509Z           "evidence": [
2026-06-21T23:05:52.9078632Z             {
2026-06-21T23:05:52.9078809Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:52.9079038Z               "line": 204
2026-06-21T23:05:52.9079167Z             }
2026-06-21T23:05:52.9079300Z           ]
2026-06-21T23:05:52.9079448Z         },
2026-06-21T23:05:52.9079561Z         "int": {
2026-06-21T23:05:52.9079701Z           "complete": true,
2026-06-21T23:05:52.9079844Z           "evidence": [
2026-06-21T23:05:52.9079958Z             {
2026-06-21T23:05:52.9080143Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T23:05:52.9080273Z               "line": 296
2026-06-21T23:05:52.9080406Z             }
2026-06-21T23:05:52.9080534Z           ]
2026-06-21T23:05:52.9080660Z         },
2026-06-21T23:05:52.9080791Z         "unit": {
2026-06-21T23:05:52.9080939Z           "complete": true,
2026-06-21T23:05:52.9081083Z           "evidence": [
2026-06-21T23:05:52.9081201Z             {
2026-06-21T23:05:52.9081378Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:52.9081506Z               "line": 467
2026-06-21T23:05:52.9081641Z             }
2026-06-21T23:05:52.9081773Z           ]
2026-06-21T23:05:52.9081903Z         }
2026-06-21T23:05:52.9085241Z       }
2026-06-21T23:05:52.9085414Z     },
2026-06-21T23:05:52.9085541Z     {
2026-06-21T23:05:52.9085695Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T23:05:52.9089221Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T23:05:52.9089712Z       "requiredStages": [
2026-06-21T23:05:52.9089840Z         "impl",
2026-06-21T23:05:52.9089970Z         "unit",
2026-06-21T23:05:52.9090094Z         "int"
2026-06-21T23:05:52.9090223Z       ],
2026-06-21T23:05:52.9090351Z       "stages": {
2026-06-21T23:05:52.9090484Z         "doc": {
2026-06-21T23:05:52.9090623Z           "complete": false,
2026-06-21T23:05:52.9090770Z           "evidence": []
2026-06-21T23:05:52.9090891Z         },
2026-06-21T23:05:52.9091023Z         "impl": {
2026-06-21T23:05:52.9091177Z           "complete": true,
2026-06-21T23:05:52.9091328Z           "evidence": [
2026-06-21T23:05:52.9091456Z             {
2026-06-21T23:05:52.9091662Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:52.9091804Z               "line": 123
2026-06-21T23:05:52.9091914Z             },
2026-06-21T23:05:52.9092047Z             {
2026-06-21T23:05:52.9092211Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T23:05:52.9092352Z               "line": 134
2026-06-21T23:05:52.9092477Z             }
2026-06-21T23:05:52.9092610Z           ]
2026-06-21T23:05:52.9092729Z         },
2026-06-21T23:05:52.9092854Z         "int": {
2026-06-21T23:05:52.9093001Z           "complete": true,
2026-06-21T23:05:52.9093131Z           "evidence": [
2026-06-21T23:05:52.9093267Z             {
2026-06-21T23:05:52.9093446Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:05:52.9093577Z               "line": 312
2026-06-21T23:05:52.9093700Z             },
2026-06-21T23:05:52.9093829Z             {
2026-06-21T23:05:52.9094008Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:05:52.9094143Z               "line": 525
2026-06-21T23:05:52.9094275Z             }
2026-06-21T23:05:52.9094390Z           ]
2026-06-21T23:05:52.9094520Z         },
2026-06-21T23:05:52.9094652Z         "unit": {
2026-06-21T23:05:52.9094781Z           "complete": true,
2026-06-21T23:05:52.9094924Z           "evidence": [
2026-06-21T23:05:52.9095054Z             {
2026-06-21T23:05:52.9095238Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:52.9095378Z               "line": 250
2026-06-21T23:05:52.9095511Z             }
2026-06-21T23:05:52.9095630Z           ]
2026-06-21T23:05:52.9095759Z         }
2026-06-21T23:05:52.9095877Z       }
2026-06-21T23:05:52.9096003Z     },
2026-06-21T23:05:52.9096135Z     {
2026-06-21T23:05:52.9096308Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T23:05:52.9098096Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T23:05:52.9098278Z       "requiredStages": [
2026-06-21T23:05:52.9098406Z         "impl",
2026-06-21T23:05:52.9098531Z         "unit"
2026-06-21T23:05:52.9098659Z       ],
2026-06-21T23:05:52.9098792Z       "stages": {
2026-06-21T23:05:52.9098927Z         "doc": {
2026-06-21T23:05:52.9099187Z           "complete": false,
2026-06-21T23:05:52.9099328Z           "evidence": []
2026-06-21T23:05:52.9099471Z         },
2026-06-21T23:05:52.9099596Z         "impl": {
2026-06-21T23:05:52.9099863Z           "complete": true,
2026-06-21T23:05:52.9099991Z           "evidence": [
2026-06-21T23:05:52.9100115Z             {
2026-06-21T23:05:52.9100395Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9100525Z               "line": 31
2026-06-21T23:05:52.9100644Z             }
2026-06-21T23:05:52.9100768Z           ]
2026-06-21T23:05:52.9100897Z         },
2026-06-21T23:05:52.9101025Z         "int": {
2026-06-21T23:05:52.9101174Z           "complete": false,
2026-06-21T23:05:52.9101302Z           "evidence": []
2026-06-21T23:05:52.9101432Z         },
2026-06-21T23:05:52.9101554Z         "unit": {
2026-06-21T23:05:52.9101694Z           "complete": true,
2026-06-21T23:05:52.9101823Z           "evidence": [
2026-06-21T23:05:52.9101940Z             {
2026-06-21T23:05:52.9102117Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9102255Z               "line": 181
2026-06-21T23:05:52.9102384Z             }
2026-06-21T23:05:52.9102513Z           ]
2026-06-21T23:05:52.9102640Z         }
2026-06-21T23:05:52.9102775Z       }
2026-06-21T23:05:52.9102898Z     },
2026-06-21T23:05:52.9103033Z     {
2026-06-21T23:05:52.9103199Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T23:05:52.9103414Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T23:05:52.9103561Z       "requiredStages": [
2026-06-21T23:05:52.9103686Z         "impl",
2026-06-21T23:05:52.9103818Z         "unit"
2026-06-21T23:05:52.9103948Z       ],
2026-06-21T23:05:52.9104077Z       "stages": {
2026-06-21T23:05:52.9104204Z         "doc": {
2026-06-21T23:05:52.9104347Z           "complete": false,
2026-06-21T23:05:52.9104483Z           "evidence": []
2026-06-21T23:05:52.9104612Z         },
2026-06-21T23:05:52.9104742Z         "impl": {
2026-06-21T23:05:52.9104864Z           "complete": true,
2026-06-21T23:05:52.9104989Z           "evidence": [
2026-06-21T23:05:52.9105117Z             {
2026-06-21T23:05:52.9105290Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9105437Z               "line": 49
2026-06-21T23:05:52.9105566Z             },
2026-06-21T23:05:52.9105704Z             {
2026-06-21T23:05:52.9105875Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9106009Z               "line": 81
2026-06-21T23:05:52.9106137Z             }
2026-06-21T23:05:52.9106267Z           ]
2026-06-21T23:05:52.9106400Z         },
2026-06-21T23:05:52.9106530Z         "int": {
2026-06-21T23:05:52.9106680Z           "complete": false,
2026-06-21T23:05:52.9106815Z           "evidence": []
2026-06-21T23:05:52.9106944Z         },
2026-06-21T23:05:52.9107071Z         "unit": {
2026-06-21T23:05:52.9107219Z           "complete": true,
2026-06-21T23:05:52.9107359Z           "evidence": [
2026-06-21T23:05:52.9107484Z             {
2026-06-21T23:05:52.9107660Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9107793Z               "line": 156
2026-06-21T23:05:52.9107922Z             },
2026-06-21T23:05:52.9108055Z             {
2026-06-21T23:05:52.9108223Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9108370Z               "line": 173
2026-06-21T23:05:52.9108495Z             },
2026-06-21T23:05:52.9108623Z             {
2026-06-21T23:05:52.9108791Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9108923Z               "line": 196
2026-06-21T23:05:52.9109130Z             }
2026-06-21T23:05:52.9109257Z           ]
2026-06-21T23:05:52.9109397Z         }
2026-06-21T23:05:52.9109520Z       }
2026-06-21T23:05:52.9109642Z     },
2026-06-21T23:05:52.9109767Z     {
2026-06-21T23:05:52.9109936Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T23:05:52.9110170Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T23:05:52.9110307Z       "requiredStages": [
2026-06-21T23:05:52.9110442Z         "impl",
2026-06-21T23:05:52.9110565Z         "unit"
2026-06-21T23:05:52.9110694Z       ],
2026-06-21T23:05:52.9110823Z       "stages": {
2026-06-21T23:05:52.9111062Z         "doc": {
2026-06-21T23:05:52.9111195Z           "complete": false,
2026-06-21T23:05:52.9111433Z           "evidence": []
2026-06-21T23:05:52.9111557Z         },
2026-06-21T23:05:52.9111687Z         "impl": {
2026-06-21T23:05:52.9111824Z           "complete": true,
2026-06-21T23:05:52.9111954Z           "evidence": [
2026-06-21T23:05:52.9112086Z             {
2026-06-21T23:05:52.9112259Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9112383Z               "line": 120
2026-06-21T23:05:52.9112514Z             }
2026-06-21T23:05:52.9112639Z           ]
2026-06-21T23:05:52.9112758Z         },
2026-06-21T23:05:52.9112881Z         "int": {
2026-06-21T23:05:52.9113035Z           "complete": false,
2026-06-21T23:05:52.9113167Z           "evidence": []
2026-06-21T23:05:52.9113302Z         },
2026-06-21T23:05:52.9113435Z         "unit": {
2026-06-21T23:05:52.9113563Z           "complete": true,
2026-06-21T23:05:52.9113711Z           "evidence": [
2026-06-21T23:05:52.9113844Z             {
2026-06-21T23:05:52.9114012Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9114154Z               "line": 212
2026-06-21T23:05:52.9114280Z             },
2026-06-21T23:05:52.9114402Z             {
2026-06-21T23:05:52.9114575Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9114716Z               "line": 221
2026-06-21T23:05:52.9114840Z             },
2026-06-21T23:05:52.9114973Z             {
2026-06-21T23:05:52.9115138Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9115277Z               "line": 229
2026-06-21T23:05:52.9115405Z             },
2026-06-21T23:05:52.9115529Z             {
2026-06-21T23:05:52.9115701Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9115840Z               "line": 239
2026-06-21T23:05:52.9115969Z             },
2026-06-21T23:05:52.9116092Z             {
2026-06-21T23:05:52.9116264Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:05:52.9116407Z               "line": 249
2026-06-21T23:05:52.9116527Z             }
2026-06-21T23:05:52.9116664Z           ]
2026-06-21T23:05:52.9116789Z         }
2026-06-21T23:05:52.9116917Z       }
2026-06-21T23:05:52.9117036Z     },
2026-06-21T23:05:52.9117166Z     {
2026-06-21T23:05:52.9117327Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T23:05:52.9117537Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T23:05:52.9117683Z       "requiredStages": [
2026-06-21T23:05:52.9117812Z         "impl",
2026-06-21T23:05:52.9117948Z         "unit"
2026-06-21T23:05:52.9118063Z       ],
2026-06-21T23:05:52.9118193Z       "stages": {
2026-06-21T23:05:52.9118325Z         "doc": {
2026-06-21T23:05:52.9118464Z           "complete": false,
2026-06-21T23:05:52.9118606Z           "evidence": []
2026-06-21T23:05:52.9118731Z         },
2026-06-21T23:05:52.9118860Z         "impl": {
2026-06-21T23:05:52.9119070Z           "complete": true,
2026-06-21T23:05:52.9119216Z           "evidence": [
2026-06-21T23:05:52.9119346Z             {
2026-06-21T23:05:52.9119522Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:05:52.9119656Z               "line": 14
2026-06-21T23:05:52.9119784Z             },
2026-06-21T23:05:52.9119913Z             {
2026-06-21T23:05:52.9120071Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:05:52.9120207Z               "line": 63
2026-06-21T23:05:52.9120336Z             }
2026-06-21T23:05:52.9120458Z           ]
2026-06-21T23:05:52.9120586Z         },
2026-06-21T23:05:52.9120711Z         "int": {
2026-06-21T23:05:52.9120858Z           "complete": false,
2026-06-21T23:05:52.9120993Z           "evidence": []
2026-06-21T23:05:52.9121125Z         },
2026-06-21T23:05:52.9121250Z         "unit": {
2026-06-21T23:05:52.9121398Z           "complete": true,
2026-06-21T23:05:52.9121521Z           "evidence": [
2026-06-21T23:05:52.9121650Z             {
2026-06-21T23:05:52.9121817Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:05:52.9122069Z               "line": 164
2026-06-21T23:05:52.9122194Z             },
2026-06-21T23:05:52.9122418Z             {
2026-06-21T23:05:52.9122577Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:05:52.9122723Z               "line": 198
2026-06-21T23:05:52.9122848Z             },
2026-06-21T23:05:52.9122980Z             {
2026-06-21T23:05:52.9123141Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:05:52.9123271Z               "line": 220
2026-06-21T23:05:52.9123408Z             }
2026-06-21T23:05:52.9123528Z           ]
2026-06-21T23:05:52.9123652Z         }
2026-06-21T23:05:52.9123775Z       }
2026-06-21T23:05:52.9123905Z     },
2026-06-21T23:05:52.9124028Z     {
2026-06-21T23:05:52.9124191Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T23:05:52.9125580Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T23:05:52.9125737Z       "requiredStages": [],
2026-06-21T23:05:52.9125867Z       "stages": {
2026-06-21T23:05:52.9125998Z         "doc": {
2026-06-21T23:05:52.9126129Z           "complete": true,
2026-06-21T23:05:52.9126261Z           "evidence": [
2026-06-21T23:05:52.9126386Z             {
2026-06-21T23:05:52.9126547Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9126686Z               "line": 165
2026-06-21T23:05:52.9126815Z             }
2026-06-21T23:05:52.9126942Z           ]
2026-06-21T23:05:52.9127068Z         },
2026-06-21T23:05:52.9127201Z         "impl": {
2026-06-21T23:05:52.9127345Z           "complete": false,
2026-06-21T23:05:52.9127477Z           "evidence": []
2026-06-21T23:05:52.9127591Z         },
2026-06-21T23:05:52.9127731Z         "int": {
2026-06-21T23:05:52.9127873Z           "complete": false,
2026-06-21T23:05:52.9128012Z           "evidence": []
2026-06-21T23:05:52.9128139Z         },
2026-06-21T23:05:52.9128267Z         "unit": {
2026-06-21T23:05:52.9128414Z           "complete": false,
2026-06-21T23:05:52.9128532Z           "evidence": []
2026-06-21T23:05:52.9128661Z         }
2026-06-21T23:05:52.9128781Z       }
2026-06-21T23:05:52.9128904Z     },
2026-06-21T23:05:52.9129100Z     {
2026-06-21T23:05:52.9129253Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T23:05:52.9129524Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T23:05:52.9129668Z       "requiredStages": [
2026-06-21T23:05:52.9129795Z         "impl",
2026-06-21T23:05:52.9129921Z         "unit"
2026-06-21T23:05:52.9130048Z       ],
2026-06-21T23:05:52.9130177Z       "stages": {
2026-06-21T23:05:52.9130302Z         "doc": {
2026-06-21T23:05:52.9130444Z           "complete": false,
2026-06-21T23:05:52.9130584Z           "evidence": []
2026-06-21T23:05:52.9130701Z         },
2026-06-21T23:05:52.9130829Z         "impl": {
2026-06-21T23:05:52.9130962Z           "complete": true,
2026-06-21T23:05:52.9131099Z           "evidence": [
2026-06-21T23:05:52.9131223Z             {
2026-06-21T23:05:52.9131399Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:05:52.9131529Z               "line": 76
2026-06-21T23:05:52.9131653Z             },
2026-06-21T23:05:52.9131780Z             {
2026-06-21T23:05:52.9131938Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:05:52.9132072Z               "line": 167
2026-06-21T23:05:52.9132201Z             },
2026-06-21T23:05:52.9132334Z             {
2026-06-21T23:05:52.9132488Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:05:52.9132621Z               "line": 233
2026-06-21T23:05:52.9132744Z             },
2026-06-21T23:05:52.9132868Z             {
2026-06-21T23:05:52.9133035Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:05:52.9133278Z               "line": 272
2026-06-21T23:05:52.9133494Z             }
2026-06-21T23:05:52.9133621Z           ]
2026-06-21T23:05:52.9133744Z         },
2026-06-21T23:05:52.9133878Z         "int": {
2026-06-21T23:05:52.9134021Z           "complete": false,
2026-06-21T23:05:52.9134150Z           "evidence": []
2026-06-21T23:05:52.9134273Z         },
2026-06-21T23:05:52.9134399Z         "unit": {
2026-06-21T23:05:52.9134532Z           "complete": true,
2026-06-21T23:05:52.9134665Z           "evidence": [
2026-06-21T23:05:52.9134794Z             {
2026-06-21T23:05:52.9134950Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:05:52.9135089Z               "line": 321
2026-06-21T23:05:52.9135218Z             },
2026-06-21T23:05:52.9135348Z             {
2026-06-21T23:05:52.9135504Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:05:52.9135643Z               "line": 329
2026-06-21T23:05:52.9135767Z             },
2026-06-21T23:05:52.9135903Z             {
2026-06-21T23:05:52.9136070Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:05:52.9136206Z               "line": 356
2026-06-21T23:05:52.9136326Z             },
2026-06-21T23:05:52.9136454Z             {
2026-06-21T23:05:52.9136621Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:05:52.9136760Z               "line": 395
2026-06-21T23:05:52.9136887Z             },
2026-06-21T23:05:52.9137018Z             {
2026-06-21T23:05:52.9137174Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:05:52.9137308Z               "line": 406
2026-06-21T23:05:52.9137441Z             },
2026-06-21T23:05:52.9137575Z             {
2026-06-21T23:05:52.9137742Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:05:52.9137875Z               "line": 418
2026-06-21T23:05:52.9137999Z             },
2026-06-21T23:05:52.9138128Z             {
2026-06-21T23:05:52.9138296Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:05:52.9138443Z               "line": 442
2026-06-21T23:05:52.9138572Z             }
2026-06-21T23:05:52.9138704Z           ]
2026-06-21T23:05:52.9138823Z         }
2026-06-21T23:05:52.9139021Z       }
2026-06-21T23:05:52.9139145Z     },
2026-06-21T23:05:52.9139265Z     {
2026-06-21T23:05:52.9139421Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T23:05:52.9139637Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T23:05:52.9139803Z       "requiredStages": [
2026-06-21T23:05:52.9139927Z         "impl",
2026-06-21T23:05:52.9140064Z         "int"
2026-06-21T23:05:52.9140190Z       ],
2026-06-21T23:05:52.9140318Z       "stages": {
2026-06-21T23:05:52.9140447Z         "doc": {
2026-06-21T23:05:52.9140585Z           "complete": false,
2026-06-21T23:05:52.9140718Z           "evidence": []
2026-06-21T23:05:52.9140839Z         },
2026-06-21T23:05:52.9140976Z         "impl": {
2026-06-21T23:05:52.9141115Z           "complete": true,
2026-06-21T23:05:52.9141257Z           "evidence": [
2026-06-21T23:05:52.9141384Z             {
2026-06-21T23:05:52.9141560Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9141701Z               "line": 22
2026-06-21T23:05:52.9141826Z             }
2026-06-21T23:05:52.9141954Z           ]
2026-06-21T23:05:52.9142074Z         },
2026-06-21T23:05:52.9142204Z         "int": {
2026-06-21T23:05:52.9142336Z           "complete": true,
2026-06-21T23:05:52.9142475Z           "evidence": [
2026-06-21T23:05:52.9142607Z             {
2026-06-21T23:05:52.9142776Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T23:05:52.9142917Z               "line": 18
2026-06-21T23:05:52.9143038Z             }
2026-06-21T23:05:52.9143166Z           ]
2026-06-21T23:05:52.9143281Z         },
2026-06-21T23:05:52.9143415Z         "unit": {
2026-06-21T23:05:52.9143561Z           "complete": false,
2026-06-21T23:05:52.9143692Z           "evidence": []
2026-06-21T23:05:52.9143818Z         }
2026-06-21T23:05:52.9144045Z       }
2026-06-21T23:05:52.9144176Z     },
2026-06-21T23:05:52.9144300Z     {
2026-06-21T23:05:52.9144466Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T23:05:52.9144819Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T23:05:52.9144959Z       "requiredStages": [
2026-06-21T23:05:52.9145082Z         "impl",
2026-06-21T23:05:52.9145210Z         "unit"
2026-06-21T23:05:52.9145340Z       ],
2026-06-21T23:05:52.9145467Z       "stages": {
2026-06-21T23:05:52.9145602Z         "doc": {
2026-06-21T23:05:52.9145749Z           "complete": false,
2026-06-21T23:05:52.9145888Z           "evidence": []
2026-06-21T23:05:52.9146059Z         },
2026-06-21T23:05:52.9146188Z         "impl": {
2026-06-21T23:05:52.9146331Z           "complete": true,
2026-06-21T23:05:52.9146463Z           "evidence": [
2026-06-21T23:05:52.9146597Z             {
2026-06-21T23:05:52.9146780Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9146919Z               "line": 465
2026-06-21T23:05:52.9147053Z             },
2026-06-21T23:05:52.9147176Z             {
2026-06-21T23:05:52.9147358Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:05:52.9147486Z               "line": 27
2026-06-21T23:05:52.9147611Z             }
2026-06-21T23:05:52.9147739Z           ]
2026-06-21T23:05:52.9147868Z         },
2026-06-21T23:05:52.9147996Z         "int": {
2026-06-21T23:05:52.9148140Z           "complete": false,
2026-06-21T23:05:52.9148268Z           "evidence": []
2026-06-21T23:05:52.9148396Z         },
2026-06-21T23:05:52.9148531Z         "unit": {
2026-06-21T23:05:52.9148683Z           "complete": true,
2026-06-21T23:05:52.9148818Z           "evidence": [
2026-06-21T23:05:52.9149022Z             {
2026-06-21T23:05:52.9149180Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9149330Z               "line": 990
2026-06-21T23:05:52.9149459Z             },
2026-06-21T23:05:52.9149581Z             {
2026-06-21T23:05:52.9149748Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:05:52.9149887Z               "line": 181
2026-06-21T23:05:52.9150015Z             }
2026-06-21T23:05:52.9150145Z           ]
2026-06-21T23:05:52.9150272Z         }
2026-06-21T23:05:52.9150397Z       }
2026-06-21T23:05:52.9150526Z     },
2026-06-21T23:05:52.9150654Z     {
2026-06-21T23:05:52.9150821Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T23:05:52.9151037Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T23:05:52.9151178Z       "requiredStages": [
2026-06-21T23:05:52.9151312Z         "impl",
2026-06-21T23:05:52.9151441Z         "unit"
2026-06-21T23:05:52.9151565Z       ],
2026-06-21T23:05:52.9151699Z       "stages": {
2026-06-21T23:05:52.9151822Z         "doc": {
2026-06-21T23:05:52.9151969Z           "complete": false,
2026-06-21T23:05:52.9152101Z           "evidence": []
2026-06-21T23:05:52.9152228Z         },
2026-06-21T23:05:52.9152353Z         "impl": {
2026-06-21T23:05:52.9152500Z           "complete": true,
2026-06-21T23:05:52.9152639Z           "evidence": [
2026-06-21T23:05:52.9152769Z             {
2026-06-21T23:05:52.9152964Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.9153092Z               "line": 73
2026-06-21T23:05:52.9153221Z             },
2026-06-21T23:05:52.9153345Z             {
2026-06-21T23:05:52.9153526Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.9153665Z               "line": 972
2026-06-21T23:05:52.9153793Z             },
2026-06-21T23:05:52.9153922Z             {
2026-06-21T23:05:52.9154079Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:05:52.9154219Z               "line": 20
2026-06-21T23:05:52.9154332Z             },
2026-06-21T23:05:52.9154460Z             {
2026-06-21T23:05:52.9154633Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:05:52.9154765Z               "line": 100
2026-06-21T23:05:52.9154893Z             },
2026-06-21T23:05:52.9155022Z             {
2026-06-21T23:05:52.9155299Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.9155437Z               "line": 619
2026-06-21T23:05:52.9155675Z             },
2026-06-21T23:05:52.9155804Z             {
2026-06-21T23:05:52.9155976Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T23:05:52.9156119Z               "line": 68
2026-06-21T23:05:52.9156243Z             },
2026-06-21T23:05:52.9156362Z             {
2026-06-21T23:05:52.9156530Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T23:05:52.9156671Z               "line": 80
2026-06-21T23:05:52.9156802Z             }
2026-06-21T23:05:52.9156919Z           ]
2026-06-21T23:05:52.9157042Z         },
2026-06-21T23:05:52.9157171Z         "int": {
2026-06-21T23:05:52.9157317Z           "complete": true,
2026-06-21T23:05:52.9157456Z           "evidence": [
2026-06-21T23:05:52.9157593Z             {
2026-06-21T23:05:52.9157751Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T23:05:52.9157894Z               "line": 44
2026-06-21T23:05:52.9158022Z             }
2026-06-21T23:05:52.9158152Z           ]
2026-06-21T23:05:52.9158285Z         },
2026-06-21T23:05:52.9158415Z         "unit": {
2026-06-21T23:05:52.9158566Z           "complete": true,
2026-06-21T23:05:52.9158700Z           "evidence": [
2026-06-21T23:05:52.9158824Z             {
2026-06-21T23:05:52.9159054Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.9159191Z               "line": 1181
2026-06-21T23:05:52.9159321Z             },
2026-06-21T23:05:52.9159462Z             {
2026-06-21T23:05:52.9159631Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:52.9159773Z               "line": 1197
2026-06-21T23:05:52.9159900Z             },
2026-06-21T23:05:52.9160015Z             {
2026-06-21T23:05:52.9160184Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9160323Z               "line": 2672
2026-06-21T23:05:52.9160456Z             },
2026-06-21T23:05:52.9160580Z             {
2026-06-21T23:05:52.9160738Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:05:52.9160884Z               "line": 152
2026-06-21T23:05:52.9161019Z             },
2026-06-21T23:05:52.9161147Z             {
2026-06-21T23:05:52.9161319Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:05:52.9161462Z               "line": 175
2026-06-21T23:05:52.9161592Z             },
2026-06-21T23:05:52.9161724Z             {
2026-06-21T23:05:52.9161887Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:05:52.9162020Z               "line": 186
2026-06-21T23:05:52.9162148Z             },
2026-06-21T23:05:52.9162274Z             {
2026-06-21T23:05:52.9162443Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:05:52.9162581Z               "line": 202
2026-06-21T23:05:52.9162718Z             },
2026-06-21T23:05:52.9162841Z             {
2026-06-21T23:05:52.9163000Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:05:52.9163142Z               "line": 216
2026-06-21T23:05:52.9163271Z             },
2026-06-21T23:05:52.9163394Z             {
2026-06-21T23:05:52.9163571Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T23:05:52.9163709Z               "line": 137
2026-06-21T23:05:52.9163839Z             },
2026-06-21T23:05:52.9163971Z             {
2026-06-21T23:05:52.9164124Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9164258Z               "line": 8152
2026-06-21T23:05:52.9164391Z             },
2026-06-21T23:05:52.9164516Z             {
2026-06-21T23:05:52.9164686Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T23:05:52.9164821Z               "line": 30
2026-06-21T23:05:52.9164948Z             },
2026-06-21T23:05:52.9165074Z             {
2026-06-21T23:05:52.9165240Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T23:05:52.9165367Z               "line": 73
2026-06-21T23:05:52.9165492Z             }
2026-06-21T23:05:52.9165720Z           ]
2026-06-21T23:05:52.9165844Z         }
2026-06-21T23:05:52.9165977Z       }
2026-06-21T23:05:52.9166193Z     },
2026-06-21T23:05:52.9166321Z     {
2026-06-21T23:05:52.9166498Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T23:05:52.9170585Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T23:05:52.9170787Z       "requiredStages": [
2026-06-21T23:05:52.9170912Z         "impl",
2026-06-21T23:05:52.9171040Z         "unit",
2026-06-21T23:05:52.9171169Z         "int"
2026-06-21T23:05:52.9171298Z       ],
2026-06-21T23:05:52.9171430Z       "stages": {
2026-06-21T23:05:52.9171560Z         "doc": {
2026-06-21T23:05:52.9171697Z           "complete": false,
2026-06-21T23:05:52.9171837Z           "evidence": []
2026-06-21T23:05:52.9171965Z         },
2026-06-21T23:05:52.9172093Z         "impl": {
2026-06-21T23:05:52.9172246Z           "complete": true,
2026-06-21T23:05:52.9172375Z           "evidence": [
2026-06-21T23:05:52.9172500Z             {
2026-06-21T23:05:52.9172671Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9172801Z               "line": 510
2026-06-21T23:05:52.9172937Z             },
2026-06-21T23:05:52.9173055Z             {
2026-06-21T23:05:52.9173235Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9173377Z               "line": 704
2026-06-21T23:05:52.9173503Z             }
2026-06-21T23:05:52.9173626Z           ]
2026-06-21T23:05:52.9173750Z         },
2026-06-21T23:05:52.9173884Z         "int": {
2026-06-21T23:05:52.9174026Z           "complete": true,
2026-06-21T23:05:52.9174160Z           "evidence": [
2026-06-21T23:05:52.9174293Z             {
2026-06-21T23:05:52.9174465Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9174612Z               "line": 1119
2026-06-21T23:05:52.9174737Z             },
2026-06-21T23:05:52.9174866Z             {
2026-06-21T23:05:52.9175048Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T23:05:52.9175180Z               "line": 312
2026-06-21T23:05:52.9175309Z             }
2026-06-21T23:05:52.9175438Z           ]
2026-06-21T23:05:52.9175567Z         },
2026-06-21T23:05:52.9175696Z         "unit": {
2026-06-21T23:05:52.9175838Z           "complete": true,
2026-06-21T23:05:52.9175970Z           "evidence": [
2026-06-21T23:05:52.9176110Z             {
2026-06-21T23:05:52.9176290Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9176429Z               "line": 821
2026-06-21T23:05:52.9176557Z             }
2026-06-21T23:05:52.9176682Z           ]
2026-06-21T23:05:52.9176801Z         }
2026-06-21T23:05:52.9176929Z       }
2026-06-21T23:05:52.9177053Z     },
2026-06-21T23:05:52.9177181Z     {
2026-06-21T23:05:52.9177440Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T23:05:52.9177744Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T23:05:52.9178045Z       "requiredStages": [
2026-06-21T23:05:52.9178167Z         "impl",
2026-06-21T23:05:52.9178297Z         "unit"
2026-06-21T23:05:52.9178428Z       ],
2026-06-21T23:05:52.9178566Z       "stages": {
2026-06-21T23:05:52.9178700Z         "doc": {
2026-06-21T23:05:52.9178842Z           "complete": true,
2026-06-21T23:05:52.9179043Z           "evidence": [
2026-06-21T23:05:52.9179177Z             {
2026-06-21T23:05:52.9179334Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9179472Z               "line": 133
2026-06-21T23:05:52.9179601Z             }
2026-06-21T23:05:52.9179724Z           ]
2026-06-21T23:05:52.9179845Z         },
2026-06-21T23:05:52.9179978Z         "impl": {
2026-06-21T23:05:52.9180121Z           "complete": true,
2026-06-21T23:05:52.9180249Z           "evidence": [
2026-06-21T23:05:52.9180378Z             {
2026-06-21T23:05:52.9180541Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:05:52.9180683Z               "line": 65
2026-06-21T23:05:52.9180804Z             },
2026-06-21T23:05:52.9180926Z             {
2026-06-21T23:05:52.9181092Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:05:52.9181229Z               "line": 17
2026-06-21T23:05:52.9181361Z             },
2026-06-21T23:05:52.9181486Z             {
2026-06-21T23:05:52.9181657Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:52.9181806Z               "line": 146
2026-06-21T23:05:52.9181933Z             },
2026-06-21T23:05:52.9182063Z             {
2026-06-21T23:05:52.9182220Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.9182358Z               "line": 310
2026-06-21T23:05:52.9182491Z             },
2026-06-21T23:05:52.9182611Z             {
2026-06-21T23:05:52.9182783Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.9182911Z               "line": 441
2026-06-21T23:05:52.9183046Z             },
2026-06-21T23:05:52.9183187Z             {
2026-06-21T23:05:52.9183337Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.9183483Z               "line": 32
2026-06-21T23:05:52.9183606Z             },
2026-06-21T23:05:52.9183739Z             {
2026-06-21T23:05:52.9183895Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9184038Z               "line": 1283
2026-06-21T23:05:52.9184167Z             },
2026-06-21T23:05:52.9184286Z             {
2026-06-21T23:05:52.9184439Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9184572Z               "line": 6161
2026-06-21T23:05:52.9184706Z             },
2026-06-21T23:05:52.9184834Z             {
2026-06-21T23:05:52.9184988Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9185125Z               "line": 6443
2026-06-21T23:05:52.9185254Z             }
2026-06-21T23:05:52.9185383Z           ]
2026-06-21T23:05:52.9185516Z         },
2026-06-21T23:05:52.9185650Z         "int": {
2026-06-21T23:05:52.9185783Z           "complete": false,
2026-06-21T23:05:52.9185918Z           "evidence": []
2026-06-21T23:05:52.9186050Z         },
2026-06-21T23:05:52.9186180Z         "unit": {
2026-06-21T23:05:52.9186332Z           "complete": true,
2026-06-21T23:05:52.9186468Z           "evidence": [
2026-06-21T23:05:52.9186593Z             {
2026-06-21T23:05:52.9186759Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:05:52.9186894Z               "line": 94
2026-06-21T23:05:52.9187032Z             },
2026-06-21T23:05:52.9187155Z             {
2026-06-21T23:05:52.9187323Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:05:52.9187451Z               "line": 111
2026-06-21T23:05:52.9187585Z             },
2026-06-21T23:05:52.9190824Z             {
2026-06-21T23:05:52.9191039Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:05:52.9191180Z               "line": 124
2026-06-21T23:05:52.9191458Z             },
2026-06-21T23:05:52.9191590Z             {
2026-06-21T23:05:52.9191752Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:05:52.9191979Z               "line": 134
2026-06-21T23:05:52.9192137Z             },
2026-06-21T23:05:52.9192255Z             {
2026-06-21T23:05:52.9192423Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:05:52.9192584Z               "line": 144
2026-06-21T23:05:52.9192728Z             },
2026-06-21T23:05:52.9192851Z             {
2026-06-21T23:05:52.9193014Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:05:52.9193147Z               "line": 156
2026-06-21T23:05:52.9193277Z             },
2026-06-21T23:05:52.9193395Z             {
2026-06-21T23:05:52.9193577Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.9193705Z               "line": 746
2026-06-21T23:05:52.9193829Z             },
2026-06-21T23:05:52.9193959Z             {
2026-06-21T23:05:52.9194138Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:52.9194281Z               "line": 309
2026-06-21T23:05:52.9194407Z             }
2026-06-21T23:05:52.9194522Z           ]
2026-06-21T23:05:52.9194652Z         }
2026-06-21T23:05:52.9194770Z       }
2026-06-21T23:05:52.9194895Z     },
2026-06-21T23:05:52.9195023Z     {
2026-06-21T23:05:52.9195180Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T23:05:52.9195384Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T23:05:52.9195529Z       "requiredStages": [
2026-06-21T23:05:52.9195657Z         "impl",
2026-06-21T23:05:52.9195785Z         "unit"
2026-06-21T23:05:52.9195914Z       ],
2026-06-21T23:05:52.9196043Z       "stages": {
2026-06-21T23:05:52.9196178Z         "doc": {
2026-06-21T23:05:52.9196334Z           "complete": false,
2026-06-21T23:05:52.9196468Z           "evidence": []
2026-06-21T23:05:52.9196600Z         },
2026-06-21T23:05:52.9196720Z         "impl": {
2026-06-21T23:05:52.9196873Z           "complete": true,
2026-06-21T23:05:52.9197000Z           "evidence": [
2026-06-21T23:05:52.9197130Z             {
2026-06-21T23:05:52.9197315Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:52.9197449Z               "line": 128
2026-06-21T23:05:52.9197578Z             }
2026-06-21T23:05:52.9197706Z           ]
2026-06-21T23:05:52.9197840Z         },
2026-06-21T23:05:52.9197963Z         "int": {
2026-06-21T23:05:52.9198112Z           "complete": false,
2026-06-21T23:05:52.9198250Z           "evidence": []
2026-06-21T23:05:52.9198369Z         },
2026-06-21T23:05:52.9198502Z         "unit": {
2026-06-21T23:05:52.9198631Z           "complete": true,
2026-06-21T23:05:52.9198765Z           "evidence": [
2026-06-21T23:05:52.9198888Z             {
2026-06-21T23:05:52.9199155Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:52.9199288Z               "line": 205
2026-06-21T23:05:52.9199417Z             }
2026-06-21T23:05:52.9199543Z           ]
2026-06-21T23:05:52.9199663Z         }
2026-06-21T23:05:52.9199792Z       }
2026-06-21T23:05:52.9199919Z     },
2026-06-21T23:05:52.9200050Z     {
2026-06-21T23:05:52.9200210Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T23:05:52.9200421Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T23:05:52.9200568Z       "requiredStages": [
2026-06-21T23:05:52.9200688Z         "impl",
2026-06-21T23:05:52.9200821Z         "unit"
2026-06-21T23:05:52.9200965Z       ],
2026-06-21T23:05:52.9201108Z       "stages": {
2026-06-21T23:05:52.9201251Z         "doc": {
2026-06-21T23:05:52.9201393Z           "complete": false,
2026-06-21T23:05:52.9201522Z           "evidence": []
2026-06-21T23:05:52.9201637Z         },
2026-06-21T23:05:52.9201765Z         "impl": {
2026-06-21T23:05:52.9201910Z           "complete": true,
2026-06-21T23:05:52.9202032Z           "evidence": [
2026-06-21T23:05:52.9202165Z             {
2026-06-21T23:05:52.9202335Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9202577Z               "line": 367
2026-06-21T23:05:52.9202706Z             },
2026-06-21T23:05:52.9202829Z             {
2026-06-21T23:05:52.9203116Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9203246Z               "line": 378
2026-06-21T23:05:52.9203378Z             },
2026-06-21T23:05:52.9203503Z             {
2026-06-21T23:05:52.9203655Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9203788Z               "line": 396
2026-06-21T23:05:52.9203913Z             }
2026-06-21T23:05:52.9204041Z           ]
2026-06-21T23:05:52.9204166Z         },
2026-06-21T23:05:52.9204288Z         "int": {
2026-06-21T23:05:52.9204423Z           "complete": false,
2026-06-21T23:05:52.9204552Z           "evidence": []
2026-06-21T23:05:52.9204670Z         },
2026-06-21T23:05:52.9204793Z         "unit": {
2026-06-21T23:05:52.9204925Z           "complete": true,
2026-06-21T23:05:52.9205062Z           "evidence": [
2026-06-21T23:05:52.9205192Z             {
2026-06-21T23:05:52.9205363Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9205493Z               "line": 420
2026-06-21T23:05:52.9205625Z             },
2026-06-21T23:05:52.9205750Z             {
2026-06-21T23:05:52.9205916Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9206055Z               "line": 441
2026-06-21T23:05:52.9206183Z             },
2026-06-21T23:05:52.9206312Z             {
2026-06-21T23:05:52.9206474Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9206612Z               "line": 811
2026-06-21T23:05:52.9206747Z             },
2026-06-21T23:05:52.9206870Z             {
2026-06-21T23:05:52.9207028Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9207175Z               "line": 822
2026-06-21T23:05:52.9207300Z             },
2026-06-21T23:05:52.9207424Z             {
2026-06-21T23:05:52.9207584Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9207723Z               "line": 835
2026-06-21T23:05:52.9207847Z             }
2026-06-21T23:05:52.9207966Z           ]
2026-06-21T23:05:52.9208090Z         }
2026-06-21T23:05:52.9208223Z       }
2026-06-21T23:05:52.9208348Z     },
2026-06-21T23:05:52.9208471Z     {
2026-06-21T23:05:52.9208644Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T23:05:52.9216190Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T23:05:52.9216635Z       "requiredStages": [
2026-06-21T23:05:52.9216767Z         "impl",
2026-06-21T23:05:52.9216905Z         "unit",
2026-06-21T23:05:52.9217040Z         "int"
2026-06-21T23:05:52.9217163Z       ],
2026-06-21T23:05:52.9217298Z       "stages": {
2026-06-21T23:05:52.9217430Z         "doc": {
2026-06-21T23:05:52.9217584Z           "complete": false,
2026-06-21T23:05:52.9217716Z           "evidence": []
2026-06-21T23:05:52.9217850Z         },
2026-06-21T23:05:52.9217989Z         "impl": {
2026-06-21T23:05:52.9218121Z           "complete": true,
2026-06-21T23:05:52.9218259Z           "evidence": [
2026-06-21T23:05:52.9218387Z             {
2026-06-21T23:05:52.9218559Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9218693Z               "line": 364
2026-06-21T23:05:52.9218816Z             },
2026-06-21T23:05:52.9219027Z             {
2026-06-21T23:05:52.9219189Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9219317Z               "line": 835
2026-06-21T23:05:52.9219450Z             },
2026-06-21T23:05:52.9219575Z             {
2026-06-21T23:05:52.9219742Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9219890Z               "line": 1104
2026-06-21T23:05:52.9220023Z             }
2026-06-21T23:05:52.9220143Z           ]
2026-06-21T23:05:52.9220266Z         },
2026-06-21T23:05:52.9220394Z         "int": {
2026-06-21T23:05:52.9220541Z           "complete": true,
2026-06-21T23:05:52.9220673Z           "evidence": [
2026-06-21T23:05:52.9220802Z             {
2026-06-21T23:05:52.9221002Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:05:52.9221136Z               "line": 256
2026-06-21T23:05:52.9221269Z             },
2026-06-21T23:05:52.9221398Z             {
2026-06-21T23:05:52.9221588Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:05:52.9221727Z               "line": 382
2026-06-21T23:05:52.9221851Z             }
2026-06-21T23:05:52.9221979Z           ]
2026-06-21T23:05:52.9222100Z         },
2026-06-21T23:05:52.9222228Z         "unit": {
2026-06-21T23:05:52.9222361Z           "complete": true,
2026-06-21T23:05:52.9222494Z           "evidence": [
2026-06-21T23:05:52.9222619Z             {
2026-06-21T23:05:52.9222800Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9222943Z               "line": 2799
2026-06-21T23:05:52.9223072Z             }
2026-06-21T23:05:52.9223195Z           ]
2026-06-21T23:05:52.9223313Z         }
2026-06-21T23:05:52.9223432Z       }
2026-06-21T23:05:52.9223554Z     },
2026-06-21T23:05:52.9223679Z     {
2026-06-21T23:05:52.9223874Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T23:05:52.9231069Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T23:05:52.9231514Z       "requiredStages": [
2026-06-21T23:05:52.9231639Z         "doc",
2026-06-21T23:05:52.9231763Z         "impl",
2026-06-21T23:05:52.9231896Z         "unit",
2026-06-21T23:05:52.9232026Z         "int"
2026-06-21T23:05:52.9232148Z       ],
2026-06-21T23:05:52.9232278Z       "stages": {
2026-06-21T23:05:52.9232406Z         "doc": {
2026-06-21T23:05:52.9232554Z           "complete": true,
2026-06-21T23:05:52.9232693Z           "evidence": [
2026-06-21T23:05:52.9232816Z             {
2026-06-21T23:05:52.9232975Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9233102Z               "line": 454
2026-06-21T23:05:52.9233232Z             }
2026-06-21T23:05:52.9233360Z           ]
2026-06-21T23:05:52.9233489Z         },
2026-06-21T23:05:52.9233624Z         "impl": {
2026-06-21T23:05:52.9233755Z           "complete": true,
2026-06-21T23:05:52.9233897Z           "evidence": [
2026-06-21T23:05:52.9234020Z             {
2026-06-21T23:05:52.9234196Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:52.9234321Z               "line": 355
2026-06-21T23:05:52.9234453Z             },
2026-06-21T23:05:52.9234578Z             {
2026-06-21T23:05:52.9234753Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9234888Z               "line": 493
2026-06-21T23:05:52.9235021Z             },
2026-06-21T23:05:52.9235150Z             {
2026-06-21T23:05:52.9235316Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9235454Z               "line": 1907
2026-06-21T23:05:52.9235589Z             },
2026-06-21T23:05:52.9235712Z             {
2026-06-21T23:05:52.9235880Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.9236017Z               "line": 347
2026-06-21T23:05:52.9236147Z             }
2026-06-21T23:05:52.9236275Z           ]
2026-06-21T23:05:52.9236402Z         },
2026-06-21T23:05:52.9236540Z         "int": {
2026-06-21T23:05:52.9236676Z           "complete": true,
2026-06-21T23:05:52.9236820Z           "evidence": [
2026-06-21T23:05:52.9236944Z             {
2026-06-21T23:05:52.9237116Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:05:52.9237343Z               "line": 737
2026-06-21T23:05:52.9237474Z             },
2026-06-21T23:05:52.9237602Z             {
2026-06-21T23:05:52.9237850Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:05:52.9237997Z               "line": 854
2026-06-21T23:05:52.9238118Z             },
2026-06-21T23:05:52.9238246Z             {
2026-06-21T23:05:52.9238442Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:05:52.9238575Z               "line": 544
2026-06-21T23:05:52.9238709Z             },
2026-06-21T23:05:52.9238836Z             {
2026-06-21T23:05:52.9239119Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:05:52.9239250Z               "line": 1800
2026-06-21T23:05:52.9239384Z             },
2026-06-21T23:05:52.9239513Z             {
2026-06-21T23:05:52.9239709Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T23:05:52.9239851Z               "line": 266
2026-06-21T23:05:52.9239985Z             }
2026-06-21T23:05:52.9240114Z           ]
2026-06-21T23:05:52.9240227Z         },
2026-06-21T23:05:52.9240362Z         "unit": {
2026-06-21T23:05:52.9240509Z           "complete": true,
2026-06-21T23:05:52.9240639Z           "evidence": [
2026-06-21T23:05:52.9240762Z             {
2026-06-21T23:05:52.9240925Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.9241067Z               "line": 1046
2026-06-21T23:05:52.9241191Z             },
2026-06-21T23:05:52.9241321Z             {
2026-06-21T23:05:52.9241491Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:52.9241624Z               "line": 1080
2026-06-21T23:05:52.9241746Z             }
2026-06-21T23:05:52.9241874Z           ]
2026-06-21T23:05:52.9242004Z         }
2026-06-21T23:05:52.9242127Z       }
2026-06-21T23:05:52.9242251Z     },
2026-06-21T23:05:52.9242380Z     {
2026-06-21T23:05:52.9242542Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T23:05:52.9243167Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T23:05:52.9243305Z       "requiredStages": [
2026-06-21T23:05:52.9243434Z         "impl",
2026-06-21T23:05:52.9243563Z         "unit"
2026-06-21T23:05:52.9243691Z       ],
2026-06-21T23:05:52.9243816Z       "stages": {
2026-06-21T23:05:52.9243943Z         "doc": {
2026-06-21T23:05:52.9244087Z           "complete": false,
2026-06-21T23:05:52.9244221Z           "evidence": []
2026-06-21T23:05:52.9244353Z         },
2026-06-21T23:05:52.9244486Z         "impl": {
2026-06-21T23:05:52.9244622Z           "complete": true,
2026-06-21T23:05:52.9244756Z           "evidence": [
2026-06-21T23:05:52.9244881Z             {
2026-06-21T23:05:52.9245065Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.9245200Z               "line": 759
2026-06-21T23:05:52.9245333Z             }
2026-06-21T23:05:52.9245467Z           ]
2026-06-21T23:05:52.9245595Z         },
2026-06-21T23:05:52.9245724Z         "int": {
2026-06-21T23:05:52.9245867Z           "complete": false,
2026-06-21T23:05:52.9246000Z           "evidence": []
2026-06-21T23:05:52.9246125Z         },
2026-06-21T23:05:52.9246258Z         "unit": {
2026-06-21T23:05:52.9246402Z           "complete": true,
2026-06-21T23:05:52.9246539Z           "evidence": [
2026-06-21T23:05:52.9246669Z             {
2026-06-21T23:05:52.9246844Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.9246986Z               "line": 873
2026-06-21T23:05:52.9247105Z             }
2026-06-21T23:05:52.9247236Z           ]
2026-06-21T23:05:52.9247366Z         }
2026-06-21T23:05:52.9247495Z       }
2026-06-21T23:05:52.9247623Z     },
2026-06-21T23:05:52.9247748Z     {
2026-06-21T23:05:52.9247933Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T23:05:52.9250430Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T23:05:52.9250821Z       "requiredStages": [
2026-06-21T23:05:52.9250956Z         "impl",
2026-06-21T23:05:52.9251083Z         "unit",
2026-06-21T23:05:52.9251213Z         "int"
2026-06-21T23:05:52.9251336Z       ],
2026-06-21T23:05:52.9251480Z       "stages": {
2026-06-21T23:05:52.9251604Z         "doc": {
2026-06-21T23:05:52.9251741Z           "complete": false,
2026-06-21T23:05:52.9251891Z           "evidence": []
2026-06-21T23:05:52.9252022Z         },
2026-06-21T23:05:52.9252160Z         "impl": {
2026-06-21T23:05:52.9252306Z           "complete": true,
2026-06-21T23:05:52.9252434Z           "evidence": [
2026-06-21T23:05:52.9252564Z             {
2026-06-21T23:05:52.9252744Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9252883Z               "line": 705
2026-06-21T23:05:52.9253001Z             }
2026-06-21T23:05:52.9253127Z           ]
2026-06-21T23:05:52.9253260Z         },
2026-06-21T23:05:52.9253388Z         "int": {
2026-06-21T23:05:52.9253531Z           "complete": true,
2026-06-21T23:05:52.9253655Z           "evidence": [
2026-06-21T23:05:52.9253794Z             {
2026-06-21T23:05:52.9253984Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T23:05:52.9254109Z               "line": 24
2026-06-21T23:05:52.9254247Z             }
2026-06-21T23:05:52.9254362Z           ]
2026-06-21T23:05:52.9254499Z         },
2026-06-21T23:05:52.9254633Z         "unit": {
2026-06-21T23:05:52.9254782Z           "complete": true,
2026-06-21T23:05:52.9254913Z           "evidence": [
2026-06-21T23:05:52.9255042Z             {
2026-06-21T23:05:52.9255230Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9255354Z               "line": 918
2026-06-21T23:05:52.9255493Z             }
2026-06-21T23:05:52.9255621Z           ]
2026-06-21T23:05:52.9255750Z         }
2026-06-21T23:05:52.9255878Z       }
2026-06-21T23:05:52.9256008Z     },
2026-06-21T23:05:52.9256141Z     {
2026-06-21T23:05:52.9256308Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T23:05:52.9259976Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T23:05:52.9260290Z       "requiredStages": [
2026-06-21T23:05:52.9260418Z         "impl",
2026-06-21T23:05:52.9260543Z         "unit",
2026-06-21T23:05:52.9260766Z         "int"
2026-06-21T23:05:52.9260891Z       ],
2026-06-21T23:05:52.9261023Z       "stages": {
2026-06-21T23:05:52.9261144Z         "doc": {
2026-06-21T23:05:52.9261282Z           "complete": false,
2026-06-21T23:05:52.9261410Z           "evidence": []
2026-06-21T23:05:52.9261539Z         },
2026-06-21T23:05:52.9261667Z         "impl": {
2026-06-21T23:05:52.9261807Z           "complete": true,
2026-06-21T23:05:52.9261940Z           "evidence": [
2026-06-21T23:05:52.9262060Z             {
2026-06-21T23:05:52.9262234Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9262374Z               "line": 391
2026-06-21T23:05:52.9262507Z             },
2026-06-21T23:05:52.9262635Z             {
2026-06-21T23:05:52.9262806Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9262947Z               "line": 343
2026-06-21T23:05:52.9263076Z             },
2026-06-21T23:05:52.9263200Z             {
2026-06-21T23:05:52.9263357Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9263491Z               "line": 1750
2026-06-21T23:05:52.9263624Z             },
2026-06-21T23:05:52.9263753Z             {
2026-06-21T23:05:52.9263905Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9264035Z               "line": 3191
2026-06-21T23:05:52.9264163Z             }
2026-06-21T23:05:52.9264282Z           ]
2026-06-21T23:05:52.9264425Z         },
2026-06-21T23:05:52.9264549Z         "int": {
2026-06-21T23:05:52.9264684Z           "complete": true,
2026-06-21T23:05:52.9264816Z           "evidence": [
2026-06-21T23:05:52.9264941Z             {
2026-06-21T23:05:52.9265131Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T23:05:52.9265270Z               "line": 353
2026-06-21T23:05:52.9265398Z             },
2026-06-21T23:05:52.9265534Z             {
2026-06-21T23:05:52.9265738Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T23:05:52.9265881Z               "line": 23
2026-06-21T23:05:52.9266005Z             }
2026-06-21T23:05:52.9266138Z           ]
2026-06-21T23:05:52.9266268Z         },
2026-06-21T23:05:52.9266387Z         "unit": {
2026-06-21T23:05:52.9266535Z           "complete": true,
2026-06-21T23:05:52.9266673Z           "evidence": [
2026-06-21T23:05:52.9266801Z             {
2026-06-21T23:05:52.9266973Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9267111Z               "line": 743
2026-06-21T23:05:52.9267241Z             },
2026-06-21T23:05:52.9267369Z             {
2026-06-21T23:05:52.9267527Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9267664Z               "line": 7863
2026-06-21T23:05:52.9267789Z             }
2026-06-21T23:05:52.9267917Z           ]
2026-06-21T23:05:52.9268049Z         }
2026-06-21T23:05:52.9268169Z       }
2026-06-21T23:05:52.9268295Z     },
2026-06-21T23:05:52.9268428Z     {
2026-06-21T23:05:52.9268596Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T23:05:52.9272010Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T23:05:52.9272409Z       "requiredStages": [
2026-06-21T23:05:52.9272542Z         "impl",
2026-06-21T23:05:52.9272667Z         "unit",
2026-06-21T23:05:52.9272799Z         "int"
2026-06-21T23:05:52.9272924Z       ],
2026-06-21T23:05:52.9273062Z       "stages": {
2026-06-21T23:05:52.9273190Z         "doc": {
2026-06-21T23:05:52.9273328Z           "complete": false,
2026-06-21T23:05:52.9273464Z           "evidence": []
2026-06-21T23:05:52.9273593Z         },
2026-06-21T23:05:52.9273713Z         "impl": {
2026-06-21T23:05:52.9273855Z           "complete": true,
2026-06-21T23:05:52.9273990Z           "evidence": [
2026-06-21T23:05:52.9274112Z             {
2026-06-21T23:05:52.9274290Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9274437Z               "line": 64
2026-06-21T23:05:52.9274557Z             },
2026-06-21T23:05:52.9274695Z             {
2026-06-21T23:05:52.9274872Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9275019Z               "line": 78
2026-06-21T23:05:52.9275148Z             },
2026-06-21T23:05:52.9275281Z             {
2026-06-21T23:05:52.9275448Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9275587Z               "line": 170
2026-06-21T23:05:52.9275715Z             },
2026-06-21T23:05:52.9275840Z             {
2026-06-21T23:05:52.9276014Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9276148Z               "line": 185
2026-06-21T23:05:52.9276284Z             },
2026-06-21T23:05:52.9276417Z             {
2026-06-21T23:05:52.9276590Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9276727Z               "line": 195
2026-06-21T23:05:52.9276847Z             },
2026-06-21T23:05:52.9276980Z             {
2026-06-21T23:05:52.9277152Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9277304Z               "line": 205
2026-06-21T23:05:52.9277433Z             },
2026-06-21T23:05:52.9277561Z             {
2026-06-21T23:05:52.9277734Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9277866Z               "line": 294
2026-06-21T23:05:52.9277996Z             },
2026-06-21T23:05:52.9278125Z             {
2026-06-21T23:05:52.9278301Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9278450Z               "line": 308
2026-06-21T23:05:52.9278576Z             },
2026-06-21T23:05:52.9278709Z             {
2026-06-21T23:05:52.9278879Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9279099Z               "line": 377
2026-06-21T23:05:52.9279231Z             },
2026-06-21T23:05:52.9279356Z             {
2026-06-21T23:05:52.9279536Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9279671Z               "line": 437
2026-06-21T23:05:52.9279800Z             },
2026-06-21T23:05:52.9279928Z             {
2026-06-21T23:05:52.9280095Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9280233Z               "line": 455
2026-06-21T23:05:52.9280368Z             }
2026-06-21T23:05:52.9280505Z           ]
2026-06-21T23:05:52.9280630Z         },
2026-06-21T23:05:52.9280762Z         "int": {
2026-06-21T23:05:52.9280896Z           "complete": true,
2026-06-21T23:05:52.9281039Z           "evidence": [
2026-06-21T23:05:52.9281163Z             {
2026-06-21T23:05:52.9281359Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T23:05:52.9281495Z               "line": 45
2026-06-21T23:05:52.9281625Z             },
2026-06-21T23:05:52.9281753Z             {
2026-06-21T23:05:52.9281945Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T23:05:52.9282077Z               "line": 354
2026-06-21T23:05:52.9282311Z             },
2026-06-21T23:05:52.9282440Z             {
2026-06-21T23:05:52.9282636Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T23:05:52.9282870Z               "line": 31
2026-06-21T23:05:52.9283012Z             }
2026-06-21T23:05:52.9283136Z           ]
2026-06-21T23:05:52.9283265Z         },
2026-06-21T23:05:52.9283393Z         "unit": {
2026-06-21T23:05:52.9283533Z           "complete": true,
2026-06-21T23:05:52.9283670Z           "evidence": [
2026-06-21T23:05:52.9283802Z             {
2026-06-21T23:05:52.9283972Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9284105Z               "line": 727
2026-06-21T23:05:52.9284240Z             }
2026-06-21T23:05:52.9284367Z           ]
2026-06-21T23:05:52.9284502Z         }
2026-06-21T23:05:52.9284635Z       }
2026-06-21T23:05:52.9284759Z     },
2026-06-21T23:05:52.9284893Z     {
2026-06-21T23:05:52.9285049Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T23:05:52.9285321Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T23:05:52.9285460Z       "requiredStages": [
2026-06-21T23:05:52.9285593Z         "impl",
2026-06-21T23:05:52.9285722Z         "unit"
2026-06-21T23:05:52.9285851Z       ],
2026-06-21T23:05:52.9285984Z       "stages": {
2026-06-21T23:05:52.9286118Z         "doc": {
2026-06-21T23:05:52.9286266Z           "complete": false,
2026-06-21T23:05:52.9286401Z           "evidence": []
2026-06-21T23:05:52.9286523Z         },
2026-06-21T23:05:52.9286650Z         "impl": {
2026-06-21T23:05:52.9286784Z           "complete": true,
2026-06-21T23:05:52.9286919Z           "evidence": [
2026-06-21T23:05:52.9287049Z             {
2026-06-21T23:05:52.9287225Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:05:52.9287359Z               "line": 14
2026-06-21T23:05:52.9287479Z             },
2026-06-21T23:05:52.9287606Z             {
2026-06-21T23:05:52.9287765Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:52.9287916Z               "line": 566
2026-06-21T23:05:52.9288046Z             }
2026-06-21T23:05:52.9288179Z           ]
2026-06-21T23:05:52.9288313Z         },
2026-06-21T23:05:52.9288445Z         "int": {
2026-06-21T23:05:52.9288594Z           "complete": false,
2026-06-21T23:05:52.9288733Z           "evidence": []
2026-06-21T23:05:52.9288856Z         },
2026-06-21T23:05:52.9289062Z         "unit": {
2026-06-21T23:05:52.9289207Z           "complete": true,
2026-06-21T23:05:52.9289341Z           "evidence": [
2026-06-21T23:05:52.9289482Z             {
2026-06-21T23:05:52.9289650Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:05:52.9289773Z               "line": 130
2026-06-21T23:05:52.9289907Z             },
2026-06-21T23:05:52.9290036Z             {
2026-06-21T23:05:52.9290207Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:05:52.9290350Z               "line": 138
2026-06-21T23:05:52.9290473Z             },
2026-06-21T23:05:52.9290594Z             {
2026-06-21T23:05:52.9290759Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:05:52.9290904Z               "line": 146
2026-06-21T23:05:52.9291037Z             },
2026-06-21T23:05:52.9291166Z             {
2026-06-21T23:05:52.9291327Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:05:52.9291471Z               "line": 154
2026-06-21T23:05:52.9291595Z             },
2026-06-21T23:05:52.9291728Z             {
2026-06-21T23:05:52.9291896Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:05:52.9292027Z               "line": 162
2026-06-21T23:05:52.9292161Z             },
2026-06-21T23:05:52.9292290Z             {
2026-06-21T23:05:52.9292442Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:05:52.9292586Z               "line": 170
2026-06-21T23:05:52.9292709Z             }
2026-06-21T23:05:52.9292834Z           ]
2026-06-21T23:05:52.9292966Z         }
2026-06-21T23:05:52.9293096Z       }
2026-06-21T23:05:52.9293224Z     },
2026-06-21T23:05:52.9293464Z     {
2026-06-21T23:05:52.9293634Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T23:05:52.9294570Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T23:05:52.9294833Z       "requiredStages": [
2026-06-21T23:05:52.9294965Z         "impl",
2026-06-21T23:05:52.9295095Z         "unit"
2026-06-21T23:05:52.9295223Z       ],
2026-06-21T23:05:52.9295358Z       "stages": {
2026-06-21T23:05:52.9295495Z         "doc": {
2026-06-21T23:05:52.9295634Z           "complete": false,
2026-06-21T23:05:52.9295777Z           "evidence": []
2026-06-21T23:05:52.9295900Z         },
2026-06-21T23:05:52.9296035Z         "impl": {
2026-06-21T23:05:52.9296177Z           "complete": true,
2026-06-21T23:05:52.9296317Z           "evidence": [
2026-06-21T23:05:52.9296449Z             {
2026-06-21T23:05:52.9296655Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:05:52.9296806Z               "line": 34
2026-06-21T23:05:52.9296931Z             }
2026-06-21T23:05:52.9297069Z           ]
2026-06-21T23:05:52.9297196Z         },
2026-06-21T23:05:52.9297325Z         "int": {
2026-06-21T23:05:52.9297475Z           "complete": false,
2026-06-21T23:05:52.9297605Z           "evidence": []
2026-06-21T23:05:52.9297733Z         },
2026-06-21T23:05:52.9297866Z         "unit": {
2026-06-21T23:05:52.9298010Z           "complete": true,
2026-06-21T23:05:52.9298147Z           "evidence": [
2026-06-21T23:05:52.9298263Z             {
2026-06-21T23:05:52.9298462Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:05:52.9298597Z               "line": 188
2026-06-21T23:05:52.9298725Z             },
2026-06-21T23:05:52.9298854Z             {
2026-06-21T23:05:52.9299125Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:05:52.9299279Z               "line": 200
2026-06-21T23:05:52.9299411Z             },
2026-06-21T23:05:52.9299536Z             {
2026-06-21T23:05:52.9299725Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:05:52.9299863Z               "line": 211
2026-06-21T23:05:52.9299995Z             },
2026-06-21T23:05:52.9300123Z             {
2026-06-21T23:05:52.9300310Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:05:52.9300438Z               "line": 253
2026-06-21T23:05:52.9300572Z             },
2026-06-21T23:05:52.9300700Z             {
2026-06-21T23:05:52.9300891Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:05:52.9301033Z               "line": 277
2026-06-21T23:05:52.9301159Z             },
2026-06-21T23:05:52.9301282Z             {
2026-06-21T23:05:52.9301469Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:05:52.9301607Z               "line": 300
2026-06-21T23:05:52.9301741Z             },
2026-06-21T23:05:52.9301873Z             {
2026-06-21T23:05:52.9302065Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:05:52.9302211Z               "line": 316
2026-06-21T23:05:52.9302341Z             }
2026-06-21T23:05:52.9302461Z           ]
2026-06-21T23:05:52.9302587Z         }
2026-06-21T23:05:52.9302711Z       }
2026-06-21T23:05:52.9302846Z     },
2026-06-21T23:05:52.9302973Z     {
2026-06-21T23:05:52.9303136Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T23:05:52.9303728Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T23:05:52.9303865Z       "requiredStages": [
2026-06-21T23:05:52.9303990Z         "impl",
2026-06-21T23:05:52.9304118Z         "unit"
2026-06-21T23:05:52.9304242Z       ],
2026-06-21T23:05:52.9304372Z       "stages": {
2026-06-21T23:05:52.9304610Z         "doc": {
2026-06-21T23:05:52.9304756Z           "complete": false,
2026-06-21T23:05:52.9304889Z           "evidence": []
2026-06-21T23:05:52.9305111Z         },
2026-06-21T23:05:52.9305254Z         "impl": {
2026-06-21T23:05:52.9305384Z           "complete": true,
2026-06-21T23:05:52.9305511Z           "evidence": [
2026-06-21T23:05:52.9305632Z             {
2026-06-21T23:05:52.9305798Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9305928Z               "line": 29
2026-06-21T23:05:52.9306060Z             },
2026-06-21T23:05:52.9306189Z             {
2026-06-21T23:05:52.9306351Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9306489Z               "line": 174
2026-06-21T23:05:52.9306614Z             },
2026-06-21T23:05:52.9306742Z             {
2026-06-21T23:05:52.9306905Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9307047Z               "line": 194
2026-06-21T23:05:52.9307182Z             },
2026-06-21T23:05:52.9307304Z             {
2026-06-21T23:05:52.9307473Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9307610Z               "line": 222
2026-06-21T23:05:52.9307742Z             }
2026-06-21T23:05:52.9307871Z           ]
2026-06-21T23:05:52.9308002Z         },
2026-06-21T23:05:52.9308131Z         "int": {
2026-06-21T23:05:52.9308284Z           "complete": false,
2026-06-21T23:05:52.9308426Z           "evidence": []
2026-06-21T23:05:52.9308551Z         },
2026-06-21T23:05:52.9311956Z         "unit": {
2026-06-21T23:05:52.9312138Z           "complete": true,
2026-06-21T23:05:52.9312276Z           "evidence": [
2026-06-21T23:05:52.9312410Z             {
2026-06-21T23:05:52.9312582Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9312725Z               "line": 329
2026-06-21T23:05:52.9312857Z             },
2026-06-21T23:05:52.9312988Z             {
2026-06-21T23:05:52.9313157Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9313310Z               "line": 344
2026-06-21T23:05:52.9313434Z             },
2026-06-21T23:05:52.9313557Z             {
2026-06-21T23:05:52.9313735Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9313867Z               "line": 417
2026-06-21T23:05:52.9314001Z             },
2026-06-21T23:05:52.9314124Z             {
2026-06-21T23:05:52.9314297Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9314439Z               "line": 433
2026-06-21T23:05:52.9314570Z             },
2026-06-21T23:05:52.9314692Z             {
2026-06-21T23:05:52.9314856Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9314997Z               "line": 492
2026-06-21T23:05:52.9315122Z             },
2026-06-21T23:05:52.9315252Z             {
2026-06-21T23:05:52.9315416Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9315550Z               "line": 506
2026-06-21T23:05:52.9315676Z             },
2026-06-21T23:05:52.9315810Z             {
2026-06-21T23:05:52.9315981Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9316120Z               "line": 517
2026-06-21T23:05:52.9316253Z             },
2026-06-21T23:05:52.9316382Z             {
2026-06-21T23:05:52.9316544Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9316687Z               "line": 528
2026-06-21T23:05:52.9316812Z             }
2026-06-21T23:05:52.9316945Z           ]
2026-06-21T23:05:52.9317073Z         }
2026-06-21T23:05:52.9317202Z       }
2026-06-21T23:05:52.9317326Z     },
2026-06-21T23:05:52.9317451Z     {
2026-06-21T23:05:52.9317631Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T23:05:52.9318378Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T23:05:52.9318534Z       "requiredStages": [
2026-06-21T23:05:52.9318816Z         "impl",
2026-06-21T23:05:52.9319030Z         "unit"
2026-06-21T23:05:52.9319154Z       ],
2026-06-21T23:05:52.9319407Z       "stages": {
2026-06-21T23:05:52.9319539Z         "doc": {
2026-06-21T23:05:52.9319684Z           "complete": false,
2026-06-21T23:05:52.9319817Z           "evidence": []
2026-06-21T23:05:52.9319945Z         },
2026-06-21T23:05:52.9320065Z         "impl": {
2026-06-21T23:05:52.9320207Z           "complete": true,
2026-06-21T23:05:52.9320347Z           "evidence": [
2026-06-21T23:05:52.9320474Z             {
2026-06-21T23:05:52.9320657Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:52.9320798Z               "line": 27
2026-06-21T23:05:52.9320931Z             },
2026-06-21T23:05:52.9321054Z             {
2026-06-21T23:05:52.9321239Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:52.9321373Z               "line": 110
2026-06-21T23:05:52.9321496Z             },
2026-06-21T23:05:52.9321626Z             {
2026-06-21T23:05:52.9321815Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:52.9321959Z               "line": 153
2026-06-21T23:05:52.9322078Z             },
2026-06-21T23:05:52.9322212Z             {
2026-06-21T23:05:52.9322388Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:52.9322526Z               "line": 182
2026-06-21T23:05:52.9322641Z             },
2026-06-21T23:05:52.9322765Z             {
2026-06-21T23:05:52.9322965Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:05:52.9323094Z               "line": 31
2026-06-21T23:05:52.9323228Z             },
2026-06-21T23:05:52.9323351Z             {
2026-06-21T23:05:52.9323543Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:05:52.9323689Z               "line": 113
2026-06-21T23:05:52.9323812Z             },
2026-06-21T23:05:52.9323943Z             {
2026-06-21T23:05:52.9324127Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:05:52.9324276Z               "line": 138
2026-06-21T23:05:52.9324403Z             }
2026-06-21T23:05:52.9324538Z           ]
2026-06-21T23:05:52.9324661Z         },
2026-06-21T23:05:52.9324786Z         "int": {
2026-06-21T23:05:52.9324933Z           "complete": false,
2026-06-21T23:05:52.9325067Z           "evidence": []
2026-06-21T23:05:52.9325196Z         },
2026-06-21T23:05:52.9325328Z         "unit": {
2026-06-21T23:05:52.9325463Z           "complete": true,
2026-06-21T23:05:52.9325590Z           "evidence": [
2026-06-21T23:05:52.9325720Z             {
2026-06-21T23:05:52.9325900Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:52.9326038Z               "line": 261
2026-06-21T23:05:52.9326167Z             },
2026-06-21T23:05:52.9326294Z             {
2026-06-21T23:05:52.9326475Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:52.9326613Z               "line": 276
2026-06-21T23:05:52.9326742Z             },
2026-06-21T23:05:52.9326875Z             {
2026-06-21T23:05:52.9327053Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:52.9327195Z               "line": 293
2026-06-21T23:05:52.9327314Z             },
2026-06-21T23:05:52.9327438Z             {
2026-06-21T23:05:52.9327614Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:52.9327749Z               "line": 310
2026-06-21T23:05:52.9327876Z             },
2026-06-21T23:05:52.9328002Z             {
2026-06-21T23:05:52.9328182Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:52.9328307Z               "line": 327
2026-06-21T23:05:52.9328439Z             },
2026-06-21T23:05:52.9328568Z             {
2026-06-21T23:05:52.9328735Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:52.9328872Z               "line": 366
2026-06-21T23:05:52.9329076Z             },
2026-06-21T23:05:52.9329198Z             {
2026-06-21T23:05:52.9329400Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:05:52.9329643Z               "line": 179
2026-06-21T23:05:52.9329881Z             },
2026-06-21T23:05:52.9330010Z             {
2026-06-21T23:05:52.9330205Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:05:52.9330338Z               "line": 194
2026-06-21T23:05:52.9330462Z             },
2026-06-21T23:05:52.9330578Z             {
2026-06-21T23:05:52.9330772Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:05:52.9330907Z               "line": 204
2026-06-21T23:05:52.9331034Z             },
2026-06-21T23:05:52.9331169Z             {
2026-06-21T23:05:52.9331358Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:05:52.9331496Z               "line": 259
2026-06-21T23:05:52.9331619Z             },
2026-06-21T23:05:52.9331741Z             {
2026-06-21T23:05:52.9331938Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:05:52.9332070Z               "line": 269
2026-06-21T23:05:52.9332200Z             },
2026-06-21T23:05:52.9332333Z             {
2026-06-21T23:05:52.9332529Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:05:52.9332666Z               "line": 283
2026-06-21T23:05:52.9332787Z             }
2026-06-21T23:05:52.9332915Z           ]
2026-06-21T23:05:52.9333038Z         }
2026-06-21T23:05:52.9333163Z       }
2026-06-21T23:05:52.9333282Z     },
2026-06-21T23:05:52.9333402Z     {
2026-06-21T23:05:52.9333563Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T23:05:52.9333807Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T23:05:52.9333959Z       "requiredStages": [],
2026-06-21T23:05:52.9334089Z       "stages": {
2026-06-21T23:05:52.9334216Z         "doc": {
2026-06-21T23:05:52.9334353Z           "complete": false,
2026-06-21T23:05:52.9334478Z           "evidence": []
2026-06-21T23:05:52.9334606Z         },
2026-06-21T23:05:52.9334736Z         "impl": {
2026-06-21T23:05:52.9334878Z           "complete": false,
2026-06-21T23:05:52.9335017Z           "evidence": []
2026-06-21T23:05:52.9335141Z         },
2026-06-21T23:05:52.9335268Z         "int": {
2026-06-21T23:05:52.9335417Z           "complete": false,
2026-06-21T23:05:52.9335555Z           "evidence": []
2026-06-21T23:05:52.9335671Z         },
2026-06-21T23:05:52.9335812Z         "unit": {
2026-06-21T23:05:52.9335951Z           "complete": false,
2026-06-21T23:05:52.9336095Z           "evidence": []
2026-06-21T23:05:52.9336218Z         }
2026-06-21T23:05:52.9336338Z       }
2026-06-21T23:05:52.9336461Z     },
2026-06-21T23:05:52.9336584Z     {
2026-06-21T23:05:52.9336755Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T23:05:52.9337661Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T23:05:52.9337821Z       "requiredStages": [
2026-06-21T23:05:52.9337951Z         "impl",
2026-06-21T23:05:52.9338079Z         "unit"
2026-06-21T23:05:52.9338203Z       ],
2026-06-21T23:05:52.9338332Z       "stages": {
2026-06-21T23:05:52.9338455Z         "doc": {
2026-06-21T23:05:52.9338600Z           "complete": false,
2026-06-21T23:05:52.9338747Z           "evidence": []
2026-06-21T23:05:52.9338881Z         },
2026-06-21T23:05:52.9339076Z         "impl": {
2026-06-21T23:05:52.9339210Z           "complete": true,
2026-06-21T23:05:52.9339337Z           "evidence": [
2026-06-21T23:05:52.9339460Z             {
2026-06-21T23:05:52.9339631Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:52.9339768Z               "line": 26
2026-06-21T23:05:52.9339898Z             },
2026-06-21T23:05:52.9340021Z             {
2026-06-21T23:05:52.9340194Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:52.9340331Z               "line": 95
2026-06-21T23:05:52.9340570Z             },
2026-06-21T23:05:52.9340679Z             {
2026-06-21T23:05:52.9340951Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:52.9341085Z               "line": 166
2026-06-21T23:05:52.9341204Z             },
2026-06-21T23:05:52.9341327Z             {
2026-06-21T23:05:52.9341505Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:05:52.9341642Z               "line": 19
2026-06-21T23:05:52.9341773Z             },
2026-06-21T23:05:52.9341899Z             {
2026-06-21T23:05:52.9342065Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:05:52.9342197Z               "line": 50
2026-06-21T23:05:52.9342320Z             },
2026-06-21T23:05:52.9342445Z             {
2026-06-21T23:05:52.9342602Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T23:05:52.9342737Z               "line": 18
2026-06-21T23:05:52.9342869Z             },
2026-06-21T23:05:52.9342993Z             {
2026-06-21T23:05:52.9343165Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T23:05:52.9343293Z               "line": 71
2026-06-21T23:05:52.9343427Z             },
2026-06-21T23:05:52.9343551Z             {
2026-06-21T23:05:52.9343714Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.9343847Z               "line": 87
2026-06-21T23:05:52.9343976Z             }
2026-06-21T23:05:52.9344104Z           ]
2026-06-21T23:05:52.9344228Z         },
2026-06-21T23:05:52.9344358Z         "int": {
2026-06-21T23:05:52.9344500Z           "complete": false,
2026-06-21T23:05:52.9344630Z           "evidence": []
2026-06-21T23:05:52.9344762Z         },
2026-06-21T23:05:52.9344894Z         "unit": {
2026-06-21T23:05:52.9345029Z           "complete": true,
2026-06-21T23:05:52.9345166Z           "evidence": [
2026-06-21T23:05:52.9345281Z             {
2026-06-21T23:05:52.9345457Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:52.9345592Z               "line": 289
2026-06-21T23:05:52.9345725Z             },
2026-06-21T23:05:52.9345858Z             {
2026-06-21T23:05:52.9346030Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:52.9346172Z               "line": 314
2026-06-21T23:05:52.9346302Z             },
2026-06-21T23:05:52.9346430Z             {
2026-06-21T23:05:52.9346598Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:52.9346730Z               "line": 350
2026-06-21T23:05:52.9346860Z             },
2026-06-21T23:05:52.9346978Z             {
2026-06-21T23:05:52.9347153Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:52.9347287Z               "line": 418
2026-06-21T23:05:52.9347423Z             },
2026-06-21T23:05:52.9347547Z             {
2026-06-21T23:05:52.9347723Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:52.9347857Z               "line": 429
2026-06-21T23:05:52.9347986Z             },
2026-06-21T23:05:52.9348110Z             {
2026-06-21T23:05:52.9348277Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:52.9348415Z               "line": 460
2026-06-21T23:05:52.9348530Z             },
2026-06-21T23:05:52.9348659Z             {
2026-06-21T23:05:52.9348831Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:52.9349039Z               "line": 471
2026-06-21T23:05:52.9349160Z             },
2026-06-21T23:05:52.9349278Z             {
2026-06-21T23:05:52.9349446Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:05:52.9349587Z               "line": 77
2026-06-21T23:05:52.9349713Z             },
2026-06-21T23:05:52.9349828Z             {
2026-06-21T23:05:52.9349997Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:05:52.9350149Z               "line": 97
2026-06-21T23:05:52.9350271Z             },
2026-06-21T23:05:52.9350396Z             {
2026-06-21T23:05:52.9350567Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:05:52.9350706Z               "line": 112
2026-06-21T23:05:52.9350938Z             },
2026-06-21T23:05:52.9351069Z             {
2026-06-21T23:05:52.9351243Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:05:52.9351459Z               "line": 123
2026-06-21T23:05:52.9351592Z             },
2026-06-21T23:05:52.9351713Z             {
2026-06-21T23:05:52.9351883Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:05:52.9352018Z               "line": 130
2026-06-21T23:05:52.9352145Z             },
2026-06-21T23:05:52.9352270Z             {
2026-06-21T23:05:52.9352436Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:05:52.9352582Z               "line": 145
2026-06-21T23:05:52.9352712Z             },
2026-06-21T23:05:52.9352838Z             {
2026-06-21T23:05:52.9352996Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T23:05:52.9353124Z               "line": 115
2026-06-21T23:05:52.9353258Z             },
2026-06-21T23:05:52.9353382Z             {
2026-06-21T23:05:52.9353553Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T23:05:52.9353687Z               "line": 130
2026-06-21T23:05:52.9353820Z             },
2026-06-21T23:05:52.9353945Z             {
2026-06-21T23:05:52.9354106Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:52.9354236Z               "line": 428
2026-06-21T23:05:52.9354364Z             }
2026-06-21T23:05:52.9354488Z           ]
2026-06-21T23:05:52.9354617Z         }
2026-06-21T23:05:52.9354736Z       }
2026-06-21T23:05:52.9354851Z     },
2026-06-21T23:05:52.9354974Z     {
2026-06-21T23:05:52.9355142Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T23:05:52.9361319Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T23:05:52.9361547Z       "requiredStages": [
2026-06-21T23:05:52.9361676Z         "impl",
2026-06-21T23:05:52.9361804Z         "unit",
2026-06-21T23:05:52.9361934Z         "int"
2026-06-21T23:05:52.9362057Z       ],
2026-06-21T23:05:52.9362186Z       "stages": {
2026-06-21T23:05:52.9362545Z         "doc": {
2026-06-21T23:05:52.9362691Z           "complete": false,
2026-06-21T23:05:52.9362921Z           "evidence": []
2026-06-21T23:05:52.9363048Z         },
2026-06-21T23:05:52.9363181Z         "impl": {
2026-06-21T23:05:52.9363314Z           "complete": true,
2026-06-21T23:05:52.9363446Z           "evidence": [
2026-06-21T23:05:52.9363571Z             {
2026-06-21T23:05:52.9363741Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9363895Z               "line": 1021
2026-06-21T23:05:52.9364008Z             },
2026-06-21T23:05:52.9364138Z             {
2026-06-21T23:05:52.9364295Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9364443Z               "line": 322
2026-06-21T23:05:52.9364567Z             }
2026-06-21T23:05:52.9364690Z           ]
2026-06-21T23:05:52.9364806Z         },
2026-06-21T23:05:52.9364929Z         "int": {
2026-06-21T23:05:52.9365077Z           "complete": true,
2026-06-21T23:05:52.9365215Z           "evidence": [
2026-06-21T23:05:52.9365344Z             {
2026-06-21T23:05:52.9365553Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:05:52.9365692Z               "line": 1983
2026-06-21T23:05:52.9365813Z             }
2026-06-21T23:05:52.9365934Z           ]
2026-06-21T23:05:52.9366067Z         },
2026-06-21T23:05:52.9366202Z         "unit": {
2026-06-21T23:05:52.9366348Z           "complete": true,
2026-06-21T23:05:52.9366483Z           "evidence": [
2026-06-21T23:05:52.9366616Z             {
2026-06-21T23:05:52.9366788Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9366916Z               "line": 2843
2026-06-21T23:05:52.9367046Z             },
2026-06-21T23:05:52.9367164Z             {
2026-06-21T23:05:52.9367336Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9367484Z               "line": 2907
2026-06-21T23:05:52.9367607Z             },
2026-06-21T23:05:52.9367742Z             {
2026-06-21T23:05:52.9367918Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9368057Z               "line": 2962
2026-06-21T23:05:52.9368193Z             }
2026-06-21T23:05:52.9368317Z           ]
2026-06-21T23:05:52.9368444Z         }
2026-06-21T23:05:52.9368572Z       }
2026-06-21T23:05:52.9368697Z     },
2026-06-21T23:05:52.9368820Z     {
2026-06-21T23:05:52.9369059Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T23:05:52.9369946Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T23:05:52.9370103Z       "requiredStages": [
2026-06-21T23:05:52.9370233Z         "doc",
2026-06-21T23:05:52.9370356Z         "impl",
2026-06-21T23:05:52.9370484Z         "unit"
2026-06-21T23:05:52.9370609Z       ],
2026-06-21T23:05:52.9370737Z       "stages": {
2026-06-21T23:05:52.9370872Z         "doc": {
2026-06-21T23:05:52.9371018Z           "complete": true,
2026-06-21T23:05:52.9371155Z           "evidence": [
2026-06-21T23:05:52.9371274Z             {
2026-06-21T23:05:52.9371439Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9371574Z               "line": 374
2026-06-21T23:05:52.9371711Z             }
2026-06-21T23:05:52.9371826Z           ]
2026-06-21T23:05:52.9371960Z         },
2026-06-21T23:05:52.9372102Z         "impl": {
2026-06-21T23:05:52.9372236Z           "complete": true,
2026-06-21T23:05:52.9372360Z           "evidence": [
2026-06-21T23:05:52.9372489Z             {
2026-06-21T23:05:52.9372665Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9372795Z               "line": 206
2026-06-21T23:05:52.9372927Z             },
2026-06-21T23:05:52.9373061Z             {
2026-06-21T23:05:52.9373228Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9373366Z               "line": 310
2026-06-21T23:05:52.9373603Z             },
2026-06-21T23:05:52.9373737Z             {
2026-06-21T23:05:52.9373892Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9374145Z               "line": 568
2026-06-21T23:05:52.9374277Z             },
2026-06-21T23:05:52.9374402Z             {
2026-06-21T23:05:52.9374578Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9374717Z               "line": 583
2026-06-21T23:05:52.9374855Z             },
2026-06-21T23:05:52.9374979Z             {
2026-06-21T23:05:52.9375150Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9375294Z               "line": 1318
2026-06-21T23:05:52.9375414Z             },
2026-06-21T23:05:52.9375546Z             {
2026-06-21T23:05:52.9375714Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.9375857Z               "line": 443
2026-06-21T23:05:52.9375977Z             },
2026-06-21T23:05:52.9376109Z             {
2026-06-21T23:05:52.9376296Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.9376438Z               "line": 590
2026-06-21T23:05:52.9376565Z             },
2026-06-21T23:05:52.9376690Z             {
2026-06-21T23:05:52.9376871Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.9377005Z               "line": 731
2026-06-21T23:05:52.9377128Z             }
2026-06-21T23:05:52.9377258Z           ]
2026-06-21T23:05:52.9377381Z         },
2026-06-21T23:05:52.9377514Z         "int": {
2026-06-21T23:05:52.9377649Z           "complete": false,
2026-06-21T23:05:52.9377790Z           "evidence": []
2026-06-21T23:05:52.9377911Z         },
2026-06-21T23:05:52.9378039Z         "unit": {
2026-06-21T23:05:52.9378172Z           "complete": true,
2026-06-21T23:05:52.9378311Z           "evidence": [
2026-06-21T23:05:52.9378434Z             {
2026-06-21T23:05:52.9378603Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.9378739Z               "line": 1155
2026-06-21T23:05:52.9378877Z             },
2026-06-21T23:05:52.9379090Z             {
2026-06-21T23:05:52.9379281Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T23:05:52.9379428Z               "line": 30
2026-06-21T23:05:52.9379553Z             }
2026-06-21T23:05:52.9379676Z           ]
2026-06-21T23:05:52.9379805Z         }
2026-06-21T23:05:52.9379929Z       }
2026-06-21T23:05:52.9380057Z     },
2026-06-21T23:05:52.9380187Z     {
2026-06-21T23:05:52.9380348Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T23:05:52.9383694Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T23:05:52.9383883Z       "requiredStages": [
2026-06-21T23:05:52.9384008Z         "impl",
2026-06-21T23:05:52.9384135Z         "unit",
2026-06-21T23:05:52.9384263Z         "int"
2026-06-21T23:05:52.9384382Z       ],
2026-06-21T23:05:52.9384523Z       "stages": {
2026-06-21T23:05:52.9384657Z         "doc": {
2026-06-21T23:05:52.9384795Z           "complete": false,
2026-06-21T23:05:52.9384933Z           "evidence": []
2026-06-21T23:05:52.9385176Z         },
2026-06-21T23:05:52.9385325Z         "impl": {
2026-06-21T23:05:52.9385563Z           "complete": true,
2026-06-21T23:05:52.9385706Z           "evidence": [
2026-06-21T23:05:52.9385834Z             {
2026-06-21T23:05:52.9385992Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:52.9386125Z               "line": 718
2026-06-21T23:05:52.9386250Z             },
2026-06-21T23:05:52.9386378Z             {
2026-06-21T23:05:52.9386532Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:52.9386678Z               "line": 887
2026-06-21T23:05:52.9386803Z             }
2026-06-21T23:05:52.9386923Z           ]
2026-06-21T23:05:52.9387054Z         },
2026-06-21T23:05:52.9387183Z         "int": {
2026-06-21T23:05:52.9387327Z           "complete": true,
2026-06-21T23:05:52.9387459Z           "evidence": [
2026-06-21T23:05:52.9387593Z             {
2026-06-21T23:05:52.9387769Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:05:52.9387913Z               "line": 420
2026-06-21T23:05:52.9388045Z             }
2026-06-21T23:05:52.9388161Z           ]
2026-06-21T23:05:52.9388299Z         },
2026-06-21T23:05:52.9388418Z         "unit": {
2026-06-21T23:05:52.9388557Z           "complete": true,
2026-06-21T23:05:52.9388689Z           "evidence": [
2026-06-21T23:05:52.9388815Z             {
2026-06-21T23:05:52.9389033Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:52.9389173Z               "line": 1072
2026-06-21T23:05:52.9389309Z             },
2026-06-21T23:05:52.9389428Z             {
2026-06-21T23:05:52.9389583Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:52.9389726Z               "line": 1096
2026-06-21T23:05:52.9389846Z             }
2026-06-21T23:05:52.9389974Z           ]
2026-06-21T23:05:52.9390093Z         }
2026-06-21T23:05:52.9390227Z       }
2026-06-21T23:05:52.9390355Z     },
2026-06-21T23:05:52.9390484Z     {
2026-06-21T23:05:52.9390650Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T23:05:52.9394419Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T23:05:52.9394592Z       "requiredStages": [
2026-06-21T23:05:52.9394724Z         "impl",
2026-06-21T23:05:52.9394852Z         "unit",
2026-06-21T23:05:52.9394984Z         "int"
2026-06-21T23:05:52.9395116Z       ],
2026-06-21T23:05:52.9395251Z       "stages": {
2026-06-21T23:05:52.9395379Z         "doc": {
2026-06-21T23:05:52.9395528Z           "complete": false,
2026-06-21T23:05:52.9395661Z           "evidence": []
2026-06-21T23:05:52.9395794Z         },
2026-06-21T23:05:52.9395923Z         "impl": {
2026-06-21T23:05:52.9396065Z           "complete": true,
2026-06-21T23:05:52.9396319Z           "evidence": [
2026-06-21T23:05:52.9396443Z             {
2026-06-21T23:05:52.9396695Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9396829Z               "line": 1417
2026-06-21T23:05:52.9396967Z             },
2026-06-21T23:05:52.9397092Z             {
2026-06-21T23:05:52.9397253Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9397392Z               "line": 1441
2026-06-21T23:05:52.9397511Z             }
2026-06-21T23:05:52.9397652Z           ]
2026-06-21T23:05:52.9397781Z         },
2026-06-21T23:05:52.9397910Z         "int": {
2026-06-21T23:05:52.9398043Z           "complete": true,
2026-06-21T23:05:52.9398182Z           "evidence": [
2026-06-21T23:05:52.9398305Z             {
2026-06-21T23:05:52.9398487Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T23:05:52.9398629Z               "line": 329
2026-06-21T23:05:52.9398750Z             }
2026-06-21T23:05:52.9398869Z           ]
2026-06-21T23:05:52.9399075Z         },
2026-06-21T23:05:52.9399212Z         "unit": {
2026-06-21T23:05:52.9399356Z           "complete": true,
2026-06-21T23:05:52.9399497Z           "evidence": [
2026-06-21T23:05:52.9399627Z             {
2026-06-21T23:05:52.9399784Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9399930Z               "line": 8169
2026-06-21T23:05:52.9400060Z             }
2026-06-21T23:05:52.9400195Z           ]
2026-06-21T23:05:52.9400319Z         }
2026-06-21T23:05:52.9400440Z       }
2026-06-21T23:05:52.9400572Z     },
2026-06-21T23:05:52.9400697Z     {
2026-06-21T23:05:52.9400848Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T23:05:52.9404722Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T23:05:52.9404931Z       "requiredStages": [
2026-06-21T23:05:52.9405066Z         "impl",
2026-06-21T23:05:52.9405195Z         "unit"
2026-06-21T23:05:52.9405326Z       ],
2026-06-21T23:05:52.9405460Z       "stages": {
2026-06-21T23:05:52.9405591Z         "doc": {
2026-06-21T23:05:52.9405729Z           "complete": false,
2026-06-21T23:05:52.9405873Z           "evidence": []
2026-06-21T23:05:52.9406005Z         },
2026-06-21T23:05:52.9406135Z         "impl": {
2026-06-21T23:05:52.9406278Z           "complete": true,
2026-06-21T23:05:52.9406422Z           "evidence": [
2026-06-21T23:05:52.9406545Z             {
2026-06-21T23:05:52.9406708Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:52.9406845Z               "line": 910
2026-06-21T23:05:52.9406974Z             }
2026-06-21T23:05:52.9407108Z           ]
2026-06-21T23:05:52.9407236Z         },
2026-06-21T23:05:52.9407366Z         "int": {
2026-06-21T23:05:52.9407508Z           "complete": false,
2026-06-21T23:05:52.9407642Z           "evidence": []
2026-06-21T23:05:52.9407875Z         },
2026-06-21T23:05:52.9408006Z         "unit": {
2026-06-21T23:05:52.9408151Z           "complete": true,
2026-06-21T23:05:52.9408376Z           "evidence": [
2026-06-21T23:05:52.9408499Z             {
2026-06-21T23:05:52.9408647Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:52.9408790Z               "line": 1112
2026-06-21T23:05:52.9408918Z             }
2026-06-21T23:05:52.9409142Z           ]
2026-06-21T23:05:52.9409277Z         }
2026-06-21T23:05:52.9409405Z       }
2026-06-21T23:05:52.9409533Z     },
2026-06-21T23:05:52.9409653Z     {
2026-06-21T23:05:52.9409833Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T23:05:52.9414372Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T23:05:52.9414604Z       "requiredStages": [
2026-06-21T23:05:52.9414744Z         "impl",
2026-06-21T23:05:52.9414868Z         "unit"
2026-06-21T23:05:52.9414996Z       ],
2026-06-21T23:05:52.9415125Z       "stages": {
2026-06-21T23:05:52.9415248Z         "doc": {
2026-06-21T23:05:52.9415398Z           "complete": false,
2026-06-21T23:05:52.9415520Z           "evidence": []
2026-06-21T23:05:52.9415655Z         },
2026-06-21T23:05:52.9415783Z         "impl": {
2026-06-21T23:05:52.9415934Z           "complete": true,
2026-06-21T23:05:52.9416067Z           "evidence": [
2026-06-21T23:05:52.9416185Z             {
2026-06-21T23:05:52.9416352Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:52.9416480Z               "line": 264
2026-06-21T23:05:52.9416619Z             }
2026-06-21T23:05:52.9416753Z           ]
2026-06-21T23:05:52.9416890Z         },
2026-06-21T23:05:52.9417029Z         "int": {
2026-06-21T23:05:52.9417176Z           "complete": false,
2026-06-21T23:05:52.9417316Z           "evidence": []
2026-06-21T23:05:52.9417444Z         },
2026-06-21T23:05:52.9417573Z         "unit": {
2026-06-21T23:05:52.9417706Z           "complete": true,
2026-06-21T23:05:52.9417848Z           "evidence": [
2026-06-21T23:05:52.9417973Z             {
2026-06-21T23:05:52.9418130Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:52.9418279Z               "line": 1094
2026-06-21T23:05:52.9418402Z             },
2026-06-21T23:05:52.9418536Z             {
2026-06-21T23:05:52.9418687Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:52.9418830Z               "line": 1225
2026-06-21T23:05:52.9419040Z             },
2026-06-21T23:05:52.9419168Z             {
2026-06-21T23:05:52.9419322Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:52.9419464Z               "line": 1227
2026-06-21T23:05:52.9419731Z             }
2026-06-21T23:05:52.9419856Z           ]
2026-06-21T23:05:52.9420088Z         }
2026-06-21T23:05:52.9420213Z       }
2026-06-21T23:05:52.9420337Z     },
2026-06-21T23:05:52.9420462Z     {
2026-06-21T23:05:52.9420632Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T23:05:52.9420956Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T23:05:52.9421103Z       "requiredStages": [
2026-06-21T23:05:52.9421226Z         "impl",
2026-06-21T23:05:52.9421363Z         "unit"
2026-06-21T23:05:52.9421478Z       ],
2026-06-21T23:05:52.9421616Z       "stages": {
2026-06-21T23:05:52.9421730Z         "doc": {
2026-06-21T23:05:52.9421879Z           "complete": true,
2026-06-21T23:05:52.9422011Z           "evidence": [
2026-06-21T23:05:52.9422142Z             {
2026-06-21T23:05:52.9422307Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9422447Z               "line": 139
2026-06-21T23:05:52.9422580Z             }
2026-06-21T23:05:52.9422709Z           ]
2026-06-21T23:05:52.9422841Z         },
2026-06-21T23:05:52.9422970Z         "impl": {
2026-06-21T23:05:52.9423114Z           "complete": true,
2026-06-21T23:05:52.9423256Z           "evidence": [
2026-06-21T23:05:52.9423386Z             {
2026-06-21T23:05:52.9423552Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T23:05:52.9423691Z               "line": 29
2026-06-21T23:05:52.9423819Z             },
2026-06-21T23:05:52.9423946Z             {
2026-06-21T23:05:52.9424122Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T23:05:52.9424254Z               "line": 67
2026-06-21T23:05:52.9424388Z             },
2026-06-21T23:05:52.9424511Z             {
2026-06-21T23:05:52.9424675Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:52.9424812Z               "line": 101
2026-06-21T23:05:52.9424947Z             },
2026-06-21T23:05:52.9425075Z             {
2026-06-21T23:05:52.9425256Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9425384Z               "line": 30
2026-06-21T23:05:52.9425523Z             },
2026-06-21T23:05:52.9425643Z             {
2026-06-21T23:05:52.9425813Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.9425943Z               "line": 48
2026-06-21T23:05:52.9426080Z             }
2026-06-21T23:05:52.9426211Z           ]
2026-06-21T23:05:52.9426338Z         },
2026-06-21T23:05:52.9426470Z         "int": {
2026-06-21T23:05:52.9426604Z           "complete": false,
2026-06-21T23:05:52.9426750Z           "evidence": []
2026-06-21T23:05:52.9426873Z         },
2026-06-21T23:05:52.9427012Z         "unit": {
2026-06-21T23:05:52.9427160Z           "complete": true,
2026-06-21T23:05:52.9427289Z           "evidence": [
2026-06-21T23:05:52.9427417Z             {
2026-06-21T23:05:52.9427589Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9427736Z               "line": 162
2026-06-21T23:05:52.9431084Z             }
2026-06-21T23:05:52.9431259Z           ]
2026-06-21T23:05:52.9431385Z         }
2026-06-21T23:05:52.9431517Z       }
2026-06-21T23:05:52.9431644Z     },
2026-06-21T23:05:52.9431772Z     {
2026-06-21T23:05:52.9431947Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T23:05:52.9432411Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T23:05:52.9432571Z       "requiredStages": [
2026-06-21T23:05:52.9432702Z         "doc",
2026-06-21T23:05:52.9432829Z         "impl",
2026-06-21T23:05:52.9432964Z         "unit"
2026-06-21T23:05:52.9433092Z       ],
2026-06-21T23:05:52.9433225Z       "stages": {
2026-06-21T23:05:52.9433354Z         "doc": {
2026-06-21T23:05:52.9433497Z           "complete": true,
2026-06-21T23:05:52.9433631Z           "evidence": [
2026-06-21T23:05:52.9433759Z             {
2026-06-21T23:05:52.9433923Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9434050Z               "line": 151
2026-06-21T23:05:52.9434332Z             }
2026-06-21T23:05:52.9434459Z           ]
2026-06-21T23:05:52.9434686Z         },
2026-06-21T23:05:52.9434814Z         "impl": {
2026-06-21T23:05:52.9434954Z           "complete": true,
2026-06-21T23:05:52.9435081Z           "evidence": [
2026-06-21T23:05:52.9435206Z             {
2026-06-21T23:05:52.9435391Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9435530Z               "line": 22
2026-06-21T23:05:52.9435655Z             }
2026-06-21T23:05:52.9435783Z           ]
2026-06-21T23:05:52.9435903Z         },
2026-06-21T23:05:52.9436035Z         "int": {
2026-06-21T23:05:52.9436179Z           "complete": false,
2026-06-21T23:05:52.9436301Z           "evidence": []
2026-06-21T23:05:52.9436426Z         },
2026-06-21T23:05:52.9436551Z         "unit": {
2026-06-21T23:05:52.9436679Z           "complete": true,
2026-06-21T23:05:52.9436814Z           "evidence": [
2026-06-21T23:05:52.9436941Z             {
2026-06-21T23:05:52.9437121Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9437267Z               "line": 298
2026-06-21T23:05:52.9437400Z             }
2026-06-21T23:05:52.9437535Z           ]
2026-06-21T23:05:52.9437657Z         }
2026-06-21T23:05:52.9437783Z       }
2026-06-21T23:05:52.9437911Z     },
2026-06-21T23:05:52.9438034Z     {
2026-06-21T23:05:52.9438212Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T23:05:52.9438717Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T23:05:52.9438865Z       "requiredStages": [
2026-06-21T23:05:52.9439070Z         "impl",
2026-06-21T23:05:52.9439203Z         "unit"
2026-06-21T23:05:52.9439318Z       ],
2026-06-21T23:05:52.9439460Z       "stages": {
2026-06-21T23:05:52.9439594Z         "doc": {
2026-06-21T23:05:52.9439738Z           "complete": true,
2026-06-21T23:05:52.9439865Z           "evidence": [
2026-06-21T23:05:52.9439993Z             {
2026-06-21T23:05:52.9440150Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9440289Z               "line": 145
2026-06-21T23:05:52.9440418Z             }
2026-06-21T23:05:52.9440546Z           ]
2026-06-21T23:05:52.9440667Z         },
2026-06-21T23:05:52.9440799Z         "impl": {
2026-06-21T23:05:52.9440942Z           "complete": true,
2026-06-21T23:05:52.9441076Z           "evidence": [
2026-06-21T23:05:52.9441209Z             {
2026-06-21T23:05:52.9441395Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T23:05:52.9441538Z               "line": 160
2026-06-21T23:05:52.9441667Z             },
2026-06-21T23:05:52.9441795Z             {
2026-06-21T23:05:52.9441982Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9442114Z               "line": 200
2026-06-21T23:05:52.9442243Z             },
2026-06-21T23:05:52.9442374Z             {
2026-06-21T23:05:52.9442560Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9442703Z               "line": 298
2026-06-21T23:05:52.9442827Z             },
2026-06-21T23:05:52.9442966Z             {
2026-06-21T23:05:52.9443127Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T23:05:52.9443262Z               "line": 20
2026-06-21T23:05:52.9443389Z             }
2026-06-21T23:05:52.9443524Z           ]
2026-06-21T23:05:52.9443662Z         },
2026-06-21T23:05:52.9443790Z         "int": {
2026-06-21T23:05:52.9443943Z           "complete": false,
2026-06-21T23:05:52.9444076Z           "evidence": []
2026-06-21T23:05:52.9444206Z         },
2026-06-21T23:05:52.9444339Z         "unit": {
2026-06-21T23:05:52.9444478Z           "complete": true,
2026-06-21T23:05:52.9444615Z           "evidence": [
2026-06-21T23:05:52.9444740Z             {
2026-06-21T23:05:52.9444920Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9445057Z               "line": 937
2026-06-21T23:05:52.9445195Z             },
2026-06-21T23:05:52.9445432Z             {
2026-06-21T23:05:52.9445623Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T23:05:52.9445857Z               "line": 88
2026-06-21T23:05:52.9445984Z             },
2026-06-21T23:05:52.9446100Z             {
2026-06-21T23:05:52.9446276Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9446419Z               "line": 851
2026-06-21T23:05:52.9446543Z             },
2026-06-21T23:05:52.9446677Z             {
2026-06-21T23:05:52.9446848Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9446972Z               "line": 870
2026-06-21T23:05:52.9447097Z             },
2026-06-21T23:05:52.9447225Z             {
2026-06-21T23:05:52.9447407Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:05:52.9447538Z               "line": 279
2026-06-21T23:05:52.9447667Z             },
2026-06-21T23:05:52.9447795Z             {
2026-06-21T23:05:52.9447955Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T23:05:52.9448100Z               "line": 82
2026-06-21T23:05:52.9448227Z             },
2026-06-21T23:05:52.9448362Z             {
2026-06-21T23:05:52.9448518Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T23:05:52.9448662Z               "line": 99
2026-06-21T23:05:52.9448786Z             },
2026-06-21T23:05:52.9448909Z             {
2026-06-21T23:05:52.9449162Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T23:05:52.9449297Z               "line": 119
2026-06-21T23:05:52.9449434Z             }
2026-06-21T23:05:52.9449558Z           ]
2026-06-21T23:05:52.9449682Z         }
2026-06-21T23:05:52.9449805Z       }
2026-06-21T23:05:52.9449921Z     },
2026-06-21T23:05:52.9450044Z     {
2026-06-21T23:05:52.9450222Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T23:05:52.9451575Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T23:05:52.9451735Z       "requiredStages": [
2026-06-21T23:05:52.9451861Z         "doc",
2026-06-21T23:05:52.9451989Z         "impl",
2026-06-21T23:05:52.9452118Z         "unit"
2026-06-21T23:05:52.9452251Z       ],
2026-06-21T23:05:52.9452379Z       "stages": {
2026-06-21T23:05:52.9452510Z         "doc": {
2026-06-21T23:05:52.9452651Z           "complete": true,
2026-06-21T23:05:52.9452788Z           "evidence": [
2026-06-21T23:05:52.9452911Z             {
2026-06-21T23:05:52.9453062Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9453207Z               "line": 157
2026-06-21T23:05:52.9453335Z             }
2026-06-21T23:05:52.9453459Z           ]
2026-06-21T23:05:52.9453587Z         },
2026-06-21T23:05:52.9453721Z         "impl": {
2026-06-21T23:05:52.9453869Z           "complete": true,
2026-06-21T23:05:52.9454002Z           "evidence": [
2026-06-21T23:05:52.9454136Z             {
2026-06-21T23:05:52.9454326Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:05:52.9454460Z               "line": 137
2026-06-21T23:05:52.9454593Z             },
2026-06-21T23:05:52.9454719Z             {
2026-06-21T23:05:52.9454899Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9455033Z               "line": 564
2026-06-21T23:05:52.9455160Z             },
2026-06-21T23:05:52.9455295Z             {
2026-06-21T23:05:52.9455471Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9455608Z               "line": 571
2026-06-21T23:05:52.9455736Z             },
2026-06-21T23:05:52.9455859Z             {
2026-06-21T23:05:52.9456026Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9456173Z               "line": 227
2026-06-21T23:05:52.9456431Z             }
2026-06-21T23:05:52.9456545Z           ]
2026-06-21T23:05:52.9456674Z         },
2026-06-21T23:05:52.9456908Z         "int": {
2026-06-21T23:05:52.9457055Z           "complete": false,
2026-06-21T23:05:52.9457184Z           "evidence": []
2026-06-21T23:05:52.9457309Z         },
2026-06-21T23:05:52.9457436Z         "unit": {
2026-06-21T23:05:52.9457571Z           "complete": true,
2026-06-21T23:05:52.9457704Z           "evidence": [
2026-06-21T23:05:52.9457832Z             {
2026-06-21T23:05:52.9458024Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9458155Z               "line": 1622
2026-06-21T23:05:52.9458284Z             },
2026-06-21T23:05:52.9458416Z             {
2026-06-21T23:05:52.9458597Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9458740Z               "line": 1680
2026-06-21T23:05:52.9458864Z             },
2026-06-21T23:05:52.9459083Z             {
2026-06-21T23:05:52.9459251Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9459398Z               "line": 883
2026-06-21T23:05:52.9459546Z             }
2026-06-21T23:05:52.9459670Z           ]
2026-06-21T23:05:52.9459794Z         }
2026-06-21T23:05:52.9459923Z       }
2026-06-21T23:05:52.9460051Z     },
2026-06-21T23:05:52.9460176Z     {
2026-06-21T23:05:52.9460347Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T23:05:52.9460595Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T23:05:52.9460734Z       "requiredStages": [
2026-06-21T23:05:52.9460863Z         "impl",
2026-06-21T23:05:52.9460980Z         "unit"
2026-06-21T23:05:52.9461104Z       ],
2026-06-21T23:05:52.9461239Z       "stages": {
2026-06-21T23:05:52.9461366Z         "doc": {
2026-06-21T23:05:52.9461514Z           "complete": false,
2026-06-21T23:05:52.9461633Z           "evidence": []
2026-06-21T23:05:52.9461763Z         },
2026-06-21T23:05:52.9461892Z         "impl": {
2026-06-21T23:05:52.9462043Z           "complete": true,
2026-06-21T23:05:52.9462172Z           "evidence": [
2026-06-21T23:05:52.9462300Z             {
2026-06-21T23:05:52.9462469Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:05:52.9462606Z               "line": 15
2026-06-21T23:05:52.9462741Z             },
2026-06-21T23:05:52.9462868Z             {
2026-06-21T23:05:52.9463046Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9463182Z               "line": 55
2026-06-21T23:05:52.9463300Z             },
2026-06-21T23:05:52.9463430Z             {
2026-06-21T23:05:52.9463599Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9463733Z               "line": 66
2026-06-21T23:05:52.9463847Z             },
2026-06-21T23:05:52.9463981Z             {
2026-06-21T23:05:52.9464138Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9464281Z               "line": 115
2026-06-21T23:05:52.9464405Z             },
2026-06-21T23:05:52.9464538Z             {
2026-06-21T23:05:52.9464710Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9464843Z               "line": 138
2026-06-21T23:05:52.9464973Z             }
2026-06-21T23:05:52.9465106Z           ]
2026-06-21T23:05:52.9465230Z         },
2026-06-21T23:05:52.9465359Z         "int": {
2026-06-21T23:05:52.9465492Z           "complete": false,
2026-06-21T23:05:52.9465632Z           "evidence": []
2026-06-21T23:05:52.9465754Z         },
2026-06-21T23:05:52.9465885Z         "unit": {
2026-06-21T23:05:52.9466017Z           "complete": true,
2026-06-21T23:05:52.9466149Z           "evidence": [
2026-06-21T23:05:52.9466283Z             {
2026-06-21T23:05:52.9466447Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:05:52.9466581Z               "line": 363
2026-06-21T23:05:52.9466709Z             },
2026-06-21T23:05:52.9466843Z             {
2026-06-21T23:05:52.9467010Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:05:52.9467143Z               "line": 369
2026-06-21T23:05:52.9467396Z             },
2026-06-21T23:05:52.9467511Z             {
2026-06-21T23:05:52.9467768Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:05:52.9467902Z               "line": 383
2026-06-21T23:05:52.9468035Z             },
2026-06-21T23:05:52.9468160Z             {
2026-06-21T23:05:52.9468311Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:05:52.9468446Z               "line": 392
2026-06-21T23:05:52.9468570Z             },
2026-06-21T23:05:52.9468697Z             {
2026-06-21T23:05:52.9468863Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9469056Z               "line": 195
2026-06-21T23:05:52.9469187Z             },
2026-06-21T23:05:52.9469310Z             {
2026-06-21T23:05:52.9469477Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9469605Z               "line": 208
2026-06-21T23:05:52.9469729Z             },
2026-06-21T23:05:52.9469859Z             {
2026-06-21T23:05:52.9470030Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9470173Z               "line": 271
2026-06-21T23:05:52.9470292Z             },
2026-06-21T23:05:52.9470412Z             {
2026-06-21T23:05:52.9470578Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9470722Z               "line": 290
2026-06-21T23:05:52.9470850Z             },
2026-06-21T23:05:52.9470979Z             {
2026-06-21T23:05:52.9471150Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9471289Z               "line": 319
2026-06-21T23:05:52.9471409Z             }
2026-06-21T23:05:52.9471535Z           ]
2026-06-21T23:05:52.9471664Z         }
2026-06-21T23:05:52.9471785Z       }
2026-06-21T23:05:52.9471916Z     },
2026-06-21T23:05:52.9472042Z     {
2026-06-21T23:05:52.9472202Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T23:05:52.9472517Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T23:05:52.9472657Z       "requiredStages": [
2026-06-21T23:05:52.9472790Z         "impl",
2026-06-21T23:05:52.9472923Z         "unit",
2026-06-21T23:05:52.9473057Z         "int"
2026-06-21T23:05:52.9473175Z       ],
2026-06-21T23:05:52.9473305Z       "stages": {
2026-06-21T23:05:52.9473432Z         "doc": {
2026-06-21T23:05:52.9473572Z           "complete": false,
2026-06-21T23:05:52.9473719Z           "evidence": []
2026-06-21T23:05:52.9473842Z         },
2026-06-21T23:05:52.9473976Z         "impl": {
2026-06-21T23:05:52.9474112Z           "complete": true,
2026-06-21T23:05:52.9474245Z           "evidence": [
2026-06-21T23:05:52.9474379Z             {
2026-06-21T23:05:52.9474546Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9474680Z               "line": 480
2026-06-21T23:05:52.9474808Z             },
2026-06-21T23:05:52.9474937Z             {
2026-06-21T23:05:52.9475108Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9475243Z               "line": 1010
2026-06-21T23:05:52.9475375Z             },
2026-06-21T23:05:52.9475509Z             {
2026-06-21T23:05:52.9475685Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9475815Z               "line": 1055
2026-06-21T23:05:52.9475947Z             },
2026-06-21T23:05:52.9476081Z             {
2026-06-21T23:05:52.9476244Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9476381Z               "line": 1080
2026-06-21T23:05:52.9476502Z             },
2026-06-21T23:05:52.9476629Z             {
2026-06-21T23:05:52.9476800Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9476941Z               "line": 1845
2026-06-21T23:05:52.9477069Z             },
2026-06-21T23:05:52.9477194Z             {
2026-06-21T23:05:52.9477369Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9477499Z               "line": 2122
2026-06-21T23:05:52.9477622Z             },
2026-06-21T23:05:52.9477747Z             {
2026-06-21T23:05:52.9478028Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9478157Z               "line": 2253
2026-06-21T23:05:52.9478372Z             },
2026-06-21T23:05:52.9478500Z             {
2026-06-21T23:05:52.9478667Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9478810Z               "line": 2301
2026-06-21T23:05:52.9478934Z             },
2026-06-21T23:05:52.9479130Z             {
2026-06-21T23:05:52.9479299Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:05:52.9479437Z               "line": 46
2026-06-21T23:05:52.9479569Z             },
2026-06-21T23:05:52.9479689Z             {
2026-06-21T23:05:52.9479856Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:05:52.9479999Z               "line": 200
2026-06-21T23:05:52.9480123Z             },
2026-06-21T23:05:52.9480251Z             {
2026-06-21T23:05:52.9480414Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:05:52.9480551Z               "line": 132
2026-06-21T23:05:52.9480681Z             },
2026-06-21T23:05:52.9480800Z             {
2026-06-21T23:05:52.9480973Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.9481114Z               "line": 137
2026-06-21T23:05:52.9481239Z             },
2026-06-21T23:05:52.9481358Z             {
2026-06-21T23:05:52.9481534Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.9481663Z               "line": 183
2026-06-21T23:05:52.9481792Z             }
2026-06-21T23:05:52.9481922Z           ]
2026-06-21T23:05:52.9482048Z         },
2026-06-21T23:05:52.9482171Z         "int": {
2026-06-21T23:05:52.9482302Z           "complete": true,
2026-06-21T23:05:52.9482434Z           "evidence": [
2026-06-21T23:05:52.9482559Z             {
2026-06-21T23:05:52.9482749Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T23:05:52.9482888Z               "line": 27
2026-06-21T23:05:52.9483012Z             },
2026-06-21T23:05:52.9483145Z             {
2026-06-21T23:05:52.9483335Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T23:05:52.9483483Z               "line": 148
2026-06-21T23:05:52.9483612Z             },
2026-06-21T23:05:52.9483745Z             {
2026-06-21T23:05:52.9483927Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T23:05:52.9484060Z               "line": 200
2026-06-21T23:05:52.9484190Z             }
2026-06-21T23:05:52.9484317Z           ]
2026-06-21T23:05:52.9484440Z         },
2026-06-21T23:05:52.9484569Z         "unit": {
2026-06-21T23:05:52.9484714Z           "complete": true,
2026-06-21T23:05:52.9484839Z           "evidence": [
2026-06-21T23:05:52.9484963Z             {
2026-06-21T23:05:52.9485139Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:05:52.9485268Z               "line": 366
2026-06-21T23:05:52.9485401Z             },
2026-06-21T23:05:52.9485530Z             {
2026-06-21T23:05:52.9485702Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:05:52.9485855Z               "line": 398
2026-06-21T23:05:52.9485978Z             },
2026-06-21T23:05:52.9486117Z             {
2026-06-21T23:05:52.9486278Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:05:52.9486423Z               "line": 419
2026-06-21T23:05:52.9486555Z             },
2026-06-21T23:05:52.9486670Z             {
2026-06-21T23:05:52.9486850Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:52.9486985Z               "line": 631
2026-06-21T23:05:52.9487114Z             },
2026-06-21T23:05:52.9487241Z             {
2026-06-21T23:05:52.9487417Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T23:05:52.9487558Z               "line": 289
2026-06-21T23:05:52.9487687Z             },
2026-06-21T23:05:52.9487821Z             {
2026-06-21T23:05:52.9487983Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T23:05:52.9488126Z               "line": 230
2026-06-21T23:05:52.9488254Z             },
2026-06-21T23:05:52.9488492Z             {
2026-06-21T23:05:52.9488665Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.9488893Z               "line": 526
2026-06-21T23:05:52.9489112Z             },
2026-06-21T23:05:52.9489222Z             {
2026-06-21T23:05:52.9489393Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:52.9489528Z               "line": 556
2026-06-21T23:05:52.9489657Z             }
2026-06-21T23:05:52.9489784Z           ]
2026-06-21T23:05:52.9489907Z         }
2026-06-21T23:05:52.9490039Z       }
2026-06-21T23:05:52.9490162Z     },
2026-06-21T23:05:52.9490292Z     {
2026-06-21T23:05:52.9490463Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T23:05:52.9492209Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T23:05:52.9492376Z       "requiredStages": [
2026-06-21T23:05:52.9492506Z         "doc",
2026-06-21T23:05:52.9492642Z         "impl",
2026-06-21T23:05:52.9492774Z         "unit"
2026-06-21T23:05:52.9492900Z       ],
2026-06-21T23:05:52.9493032Z       "stages": {
2026-06-21T23:05:52.9493162Z         "doc": {
2026-06-21T23:05:52.9493309Z           "complete": true,
2026-06-21T23:05:52.9493439Z           "evidence": [
2026-06-21T23:05:52.9493572Z             {
2026-06-21T23:05:52.9493733Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9493867Z               "line": 314
2026-06-21T23:05:52.9494000Z             }
2026-06-21T23:05:52.9494120Z           ]
2026-06-21T23:05:52.9494249Z         },
2026-06-21T23:05:52.9494388Z         "impl": {
2026-06-21T23:05:52.9494529Z           "complete": true,
2026-06-21T23:05:52.9494663Z           "evidence": [
2026-06-21T23:05:52.9494797Z             {
2026-06-21T23:05:52.9494995Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T23:05:52.9495129Z               "line": 33
2026-06-21T23:05:52.9495246Z             },
2026-06-21T23:05:52.9495371Z             {
2026-06-21T23:05:52.9495551Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T23:05:52.9495690Z               "line": 39
2026-06-21T23:05:52.9495819Z             }
2026-06-21T23:05:52.9495956Z           ]
2026-06-21T23:05:52.9496086Z         },
2026-06-21T23:05:52.9496218Z         "int": {
2026-06-21T23:05:52.9496358Z           "complete": false,
2026-06-21T23:05:52.9496496Z           "evidence": []
2026-06-21T23:05:52.9496625Z         },
2026-06-21T23:05:52.9496753Z         "unit": {
2026-06-21T23:05:52.9496896Z           "complete": true,
2026-06-21T23:05:52.9497030Z           "evidence": [
2026-06-21T23:05:52.9497158Z             {
2026-06-21T23:05:52.9497345Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T23:05:52.9497487Z               "line": 95
2026-06-21T23:05:52.9497608Z             }
2026-06-21T23:05:52.9497735Z           ]
2026-06-21T23:05:52.9497858Z         }
2026-06-21T23:05:52.9497982Z       }
2026-06-21T23:05:52.9498113Z     },
2026-06-21T23:05:52.9498233Z     {
2026-06-21T23:05:52.9498395Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T23:05:52.9500943Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T23:05:52.9501333Z       "requiredStages": [
2026-06-21T23:05:52.9501463Z         "impl",
2026-06-21T23:05:52.9501591Z         "unit"
2026-06-21T23:05:52.9501715Z       ],
2026-06-21T23:05:52.9501853Z       "stages": {
2026-06-21T23:05:52.9501982Z         "doc": {
2026-06-21T23:05:52.9502126Z           "complete": false,
2026-06-21T23:05:52.9502258Z           "evidence": []
2026-06-21T23:05:52.9502388Z         },
2026-06-21T23:05:52.9502520Z         "impl": {
2026-06-21T23:05:52.9502649Z           "complete": true,
2026-06-21T23:05:52.9502784Z           "evidence": [
2026-06-21T23:05:52.9502907Z             {
2026-06-21T23:05:52.9503108Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9503245Z               "line": 488
2026-06-21T23:05:52.9503383Z             }
2026-06-21T23:05:52.9503502Z           ]
2026-06-21T23:05:52.9503616Z         },
2026-06-21T23:05:52.9503746Z         "int": {
2026-06-21T23:05:52.9503888Z           "complete": false,
2026-06-21T23:05:52.9504027Z           "evidence": []
2026-06-21T23:05:52.9504155Z         },
2026-06-21T23:05:52.9504284Z         "unit": {
2026-06-21T23:05:52.9504432Z           "complete": true,
2026-06-21T23:05:52.9504565Z           "evidence": [
2026-06-21T23:05:52.9504694Z             {
2026-06-21T23:05:52.9504880Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9505028Z               "line": 1466
2026-06-21T23:05:52.9505161Z             }
2026-06-21T23:05:52.9505282Z           ]
2026-06-21T23:05:52.9505414Z         }
2026-06-21T23:05:52.9505541Z       }
2026-06-21T23:05:52.9505670Z     },
2026-06-21T23:05:52.9505792Z     {
2026-06-21T23:05:52.9505959Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T23:05:52.9508159Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T23:05:52.9508323Z       "requiredStages": [
2026-06-21T23:05:52.9508452Z         "unit"
2026-06-21T23:05:52.9508584Z       ],
2026-06-21T23:05:52.9508711Z       "stages": {
2026-06-21T23:05:52.9508856Z         "doc": {
2026-06-21T23:05:52.9509069Z           "complete": false,
2026-06-21T23:05:52.9509217Z           "evidence": []
2026-06-21T23:05:52.9509350Z         },
2026-06-21T23:05:52.9509490Z         "impl": {
2026-06-21T23:05:52.9509622Z           "complete": true,
2026-06-21T23:05:52.9509757Z           "evidence": [
2026-06-21T23:05:52.9509889Z             {
2026-06-21T23:05:52.9510042Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9510190Z               "line": 3520
2026-06-21T23:05:52.9510323Z             },
2026-06-21T23:05:52.9510453Z             {
2026-06-21T23:05:52.9510609Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9510739Z               "line": 3572
2026-06-21T23:05:52.9510866Z             },
2026-06-21T23:05:52.9510989Z             {
2026-06-21T23:05:52.9511156Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9511292Z               "line": 3617
2026-06-21T23:05:52.9511417Z             },
2026-06-21T23:05:52.9511655Z             {
2026-06-21T23:05:52.9511813Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9512061Z               "line": 92
2026-06-21T23:05:52.9512189Z             },
2026-06-21T23:05:52.9512309Z             {
2026-06-21T23:05:52.9512476Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9512619Z               "line": 148
2026-06-21T23:05:52.9512747Z             },
2026-06-21T23:05:52.9512876Z             {
2026-06-21T23:05:52.9513038Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9513176Z               "line": 192
2026-06-21T23:05:52.9513311Z             },
2026-06-21T23:05:52.9513438Z             {
2026-06-21T23:05:52.9513597Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9513733Z               "line": 200
2026-06-21T23:05:52.9513861Z             },
2026-06-21T23:05:52.9513991Z             {
2026-06-21T23:05:52.9514148Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9514291Z               "line": 211
2026-06-21T23:05:52.9514424Z             },
2026-06-21T23:05:52.9514554Z             {
2026-06-21T23:05:52.9514715Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9514844Z               "line": 265
2026-06-21T23:05:52.9514978Z             },
2026-06-21T23:05:52.9515101Z             {
2026-06-21T23:05:52.9515259Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9515402Z               "line": 279
2026-06-21T23:05:52.9515537Z             }
2026-06-21T23:05:52.9515669Z           ]
2026-06-21T23:05:52.9515798Z         },
2026-06-21T23:05:52.9515932Z         "int": {
2026-06-21T23:05:52.9516073Z           "complete": false,
2026-06-21T23:05:52.9516216Z           "evidence": []
2026-06-21T23:05:52.9516333Z         },
2026-06-21T23:05:52.9516467Z         "unit": {
2026-06-21T23:05:52.9516610Z           "complete": true,
2026-06-21T23:05:52.9516743Z           "evidence": [
2026-06-21T23:05:52.9516868Z             {
2026-06-21T23:05:52.9517043Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9517183Z               "line": 419
2026-06-21T23:05:52.9517310Z             },
2026-06-21T23:05:52.9517436Z             {
2026-06-21T23:05:52.9517606Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9517730Z               "line": 470
2026-06-21T23:05:52.9517864Z             },
2026-06-21T23:05:52.9517983Z             {
2026-06-21T23:05:52.9518155Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9518288Z               "line": 499
2026-06-21T23:05:52.9518423Z             },
2026-06-21T23:05:52.9518555Z             {
2026-06-21T23:05:52.9518714Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9518865Z               "line": 526
2026-06-21T23:05:52.9519050Z             }
2026-06-21T23:05:52.9519181Z           ]
2026-06-21T23:05:52.9519310Z         }
2026-06-21T23:05:52.9519440Z       }
2026-06-21T23:05:52.9519572Z     },
2026-06-21T23:05:52.9519697Z     {
2026-06-21T23:05:52.9519873Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T23:05:52.9520107Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T23:05:52.9520259Z       "requiredStages": [
2026-06-21T23:05:52.9520393Z         "impl",
2026-06-21T23:05:52.9520521Z         "unit"
2026-06-21T23:05:52.9520646Z       ],
2026-06-21T23:05:52.9520774Z       "stages": {
2026-06-21T23:05:52.9520898Z         "doc": {
2026-06-21T23:05:52.9521042Z           "complete": false,
2026-06-21T23:05:52.9521179Z           "evidence": []
2026-06-21T23:05:52.9521309Z         },
2026-06-21T23:05:52.9521445Z         "impl": {
2026-06-21T23:05:52.9521579Z           "complete": true,
2026-06-21T23:05:52.9521716Z           "evidence": [
2026-06-21T23:05:52.9521838Z             {
2026-06-21T23:05:52.9522021Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.9522162Z               "line": 62
2026-06-21T23:05:52.9522283Z             },
2026-06-21T23:05:52.9522411Z             {
2026-06-21T23:05:52.9522702Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.9522931Z               "line": 71
2026-06-21T23:05:52.9523064Z             },
2026-06-21T23:05:52.9523189Z             {
2026-06-21T23:05:52.9523374Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.9523509Z               "line": 80
2026-06-21T23:05:52.9523631Z             },
2026-06-21T23:05:52.9523755Z             {
2026-06-21T23:05:52.9523932Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.9524065Z               "line": 88
2026-06-21T23:05:52.9524181Z             },
2026-06-21T23:05:52.9524312Z             {
2026-06-21T23:05:52.9524479Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9524618Z               "line": 33
2026-06-21T23:05:52.9524750Z             },
2026-06-21T23:05:52.9524861Z             {
2026-06-21T23:05:52.9525032Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9525171Z               "line": 65
2026-06-21T23:05:52.9525303Z             },
2026-06-21T23:05:52.9525428Z             {
2026-06-21T23:05:52.9525591Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9525734Z               "line": 74
2026-06-21T23:05:52.9525852Z             },
2026-06-21T23:05:52.9525981Z             {
2026-06-21T23:05:52.9526135Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9526272Z               "line": 93
2026-06-21T23:05:52.9526397Z             },
2026-06-21T23:05:52.9526524Z             {
2026-06-21T23:05:52.9526695Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9526832Z               "line": 102
2026-06-21T23:05:52.9526959Z             },
2026-06-21T23:05:52.9527080Z             {
2026-06-21T23:05:52.9527241Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9527390Z               "line": 111
2026-06-21T23:05:52.9527513Z             },
2026-06-21T23:05:52.9527647Z             {
2026-06-21T23:05:52.9527814Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9527957Z               "line": 122
2026-06-21T23:05:52.9528090Z             },
2026-06-21T23:05:52.9528223Z             {
2026-06-21T23:05:52.9528381Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9528519Z               "line": 140
2026-06-21T23:05:52.9528654Z             },
2026-06-21T23:05:52.9528776Z             {
2026-06-21T23:05:52.9529016Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9529158Z               "line": 149
2026-06-21T23:05:52.9529289Z             },
2026-06-21T23:05:52.9529415Z             {
2026-06-21T23:05:52.9529581Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9529718Z               "line": 158
2026-06-21T23:05:52.9529841Z             },
2026-06-21T23:05:52.9529971Z             {
2026-06-21T23:05:52.9530132Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9530281Z               "line": 169
2026-06-21T23:05:52.9530413Z             },
2026-06-21T23:05:52.9530533Z             {
2026-06-21T23:05:52.9530710Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9530838Z               "line": 177
2026-06-21T23:05:52.9530967Z             },
2026-06-21T23:05:52.9531095Z             {
2026-06-21T23:05:52.9531268Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9531410Z               "line": 186
2026-06-21T23:05:52.9531536Z             },
2026-06-21T23:05:52.9534645Z             {
2026-06-21T23:05:52.9534859Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9535001Z               "line": 195
2026-06-21T23:05:52.9535136Z             },
2026-06-21T23:05:52.9535263Z             {
2026-06-21T23:05:52.9535445Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9535573Z               "line": 204
2026-06-21T23:05:52.9535703Z             },
2026-06-21T23:05:52.9535831Z             {
2026-06-21T23:05:52.9536151Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9536294Z               "line": 216
2026-06-21T23:05:52.9536508Z             },
2026-06-21T23:05:52.9536633Z             {
2026-06-21T23:05:52.9536803Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9536938Z               "line": 223
2026-06-21T23:05:52.9537066Z             },
2026-06-21T23:05:52.9537193Z             {
2026-06-21T23:05:52.9537360Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9537492Z               "line": 232
2026-06-21T23:05:52.9537616Z             },
2026-06-21T23:05:52.9537744Z             {
2026-06-21T23:05:52.9537902Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9538021Z               "line": 239
2026-06-21T23:05:52.9538149Z             },
2026-06-21T23:05:52.9538279Z             {
2026-06-21T23:05:52.9538445Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9538585Z               "line": 306
2026-06-21T23:05:52.9538708Z             },
2026-06-21T23:05:52.9538836Z             {
2026-06-21T23:05:52.9539079Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9539209Z               "line": 318
2026-06-21T23:05:52.9539336Z             },
2026-06-21T23:05:52.9539451Z             {
2026-06-21T23:05:52.9539618Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9539742Z               "line": 405
2026-06-21T23:05:52.9539868Z             }
2026-06-21T23:05:52.9539994Z           ]
2026-06-21T23:05:52.9540127Z         },
2026-06-21T23:05:52.9540255Z         "int": {
2026-06-21T23:05:52.9540401Z           "complete": false,
2026-06-21T23:05:52.9540541Z           "evidence": []
2026-06-21T23:05:52.9540659Z         },
2026-06-21T23:05:52.9540788Z         "unit": {
2026-06-21T23:05:52.9540917Z           "complete": true,
2026-06-21T23:05:52.9541049Z           "evidence": [
2026-06-21T23:05:52.9541165Z             {
2026-06-21T23:05:52.9541336Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9541475Z               "line": 487
2026-06-21T23:05:52.9541608Z             },
2026-06-21T23:05:52.9541737Z             {
2026-06-21T23:05:52.9541908Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9542038Z               "line": 528
2026-06-21T23:05:52.9542162Z             },
2026-06-21T23:05:52.9542290Z             {
2026-06-21T23:05:52.9542448Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9542580Z               "line": 541
2026-06-21T23:05:52.9542708Z             },
2026-06-21T23:05:52.9542836Z             {
2026-06-21T23:05:52.9543001Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9543127Z               "line": 627
2026-06-21T23:05:52.9543249Z             }
2026-06-21T23:05:52.9543379Z           ]
2026-06-21T23:05:52.9543503Z         }
2026-06-21T23:05:52.9543636Z       }
2026-06-21T23:05:52.9543765Z     },
2026-06-21T23:05:52.9543888Z     {
2026-06-21T23:05:52.9544042Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T23:05:52.9544289Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T23:05:52.9544442Z       "requiredStages": [
2026-06-21T23:05:52.9544561Z         "impl",
2026-06-21T23:05:52.9544695Z         "unit"
2026-06-21T23:05:52.9544809Z       ],
2026-06-21T23:05:52.9544944Z       "stages": {
2026-06-21T23:05:52.9545080Z         "doc": {
2026-06-21T23:05:52.9545215Z           "complete": false,
2026-06-21T23:05:52.9545358Z           "evidence": []
2026-06-21T23:05:52.9545485Z         },
2026-06-21T23:05:52.9545614Z         "impl": {
2026-06-21T23:05:52.9545748Z           "complete": true,
2026-06-21T23:05:52.9545890Z           "evidence": [
2026-06-21T23:05:52.9546019Z             {
2026-06-21T23:05:52.9546186Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:05:52.9546320Z               "line": 175
2026-06-21T23:05:52.9546448Z             },
2026-06-21T23:05:52.9546578Z             {
2026-06-21T23:05:52.9546869Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.9547015Z               "line": 171
2026-06-21T23:05:52.9547260Z             }
2026-06-21T23:05:52.9547378Z           ]
2026-06-21T23:05:52.9547503Z         },
2026-06-21T23:05:52.9547635Z         "int": {
2026-06-21T23:05:52.9547781Z           "complete": false,
2026-06-21T23:05:52.9547920Z           "evidence": []
2026-06-21T23:05:52.9548047Z         },
2026-06-21T23:05:52.9548185Z         "unit": {
2026-06-21T23:05:52.9548314Z           "complete": true,
2026-06-21T23:05:52.9548438Z           "evidence": [
2026-06-21T23:05:52.9548567Z             {
2026-06-21T23:05:52.9548729Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:05:52.9548863Z               "line": 297
2026-06-21T23:05:52.9549043Z             },
2026-06-21T23:05:52.9549173Z             {
2026-06-21T23:05:52.9549343Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.9549488Z               "line": 836
2026-06-21T23:05:52.9549611Z             },
2026-06-21T23:05:52.9549741Z             {
2026-06-21T23:05:52.9549906Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:52.9550051Z               "line": 849
2026-06-21T23:05:52.9550174Z             }
2026-06-21T23:05:52.9550302Z           ]
2026-06-21T23:05:52.9550428Z         }
2026-06-21T23:05:52.9550554Z       }
2026-06-21T23:05:52.9550678Z     },
2026-06-21T23:05:52.9550801Z     {
2026-06-21T23:05:52.9550957Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T23:05:52.9551153Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T23:05:52.9551290Z       "requiredStages": [
2026-06-21T23:05:52.9551415Z         "impl",
2026-06-21T23:05:52.9551543Z         "unit"
2026-06-21T23:05:52.9551673Z       ],
2026-06-21T23:05:52.9551802Z       "stages": {
2026-06-21T23:05:52.9551934Z         "doc": {
2026-06-21T23:05:52.9552082Z           "complete": false,
2026-06-21T23:05:52.9552216Z           "evidence": []
2026-06-21T23:05:52.9552351Z         },
2026-06-21T23:05:52.9552483Z         "impl": {
2026-06-21T23:05:52.9552627Z           "complete": true,
2026-06-21T23:05:52.9552764Z           "evidence": [
2026-06-21T23:05:52.9552893Z             {
2026-06-21T23:05:52.9553069Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9553196Z               "line": 116
2026-06-21T23:05:52.9553321Z             },
2026-06-21T23:05:52.9553443Z             {
2026-06-21T23:05:52.9553624Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:52.9553748Z               "line": 507
2026-06-21T23:05:52.9553882Z             }
2026-06-21T23:05:52.9554011Z           ]
2026-06-21T23:05:52.9554134Z         },
2026-06-21T23:05:52.9554268Z         "int": {
2026-06-21T23:05:52.9554411Z           "complete": false,
2026-06-21T23:05:52.9554550Z           "evidence": []
2026-06-21T23:05:52.9554668Z         },
2026-06-21T23:05:52.9554801Z         "unit": {
2026-06-21T23:05:52.9554936Z           "complete": true,
2026-06-21T23:05:52.9555073Z           "evidence": [
2026-06-21T23:05:52.9555208Z             {
2026-06-21T23:05:52.9555384Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:52.9555523Z               "line": 541
2026-06-21T23:05:52.9555645Z             }
2026-06-21T23:05:52.9555775Z           ]
2026-06-21T23:05:52.9555904Z         }
2026-06-21T23:05:52.9556031Z       }
2026-06-21T23:05:52.9556165Z     },
2026-06-21T23:05:52.9556289Z     {
2026-06-21T23:05:52.9556460Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T23:05:52.9556670Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T23:05:52.9556813Z       "requiredStages": [
2026-06-21T23:05:52.9556942Z         "impl",
2026-06-21T23:05:52.9557061Z         "unit"
2026-06-21T23:05:52.9557190Z       ],
2026-06-21T23:05:52.9557318Z       "stages": {
2026-06-21T23:05:52.9557453Z         "doc": {
2026-06-21T23:05:52.9557595Z           "complete": false,
2026-06-21T23:05:52.9557734Z           "evidence": []
2026-06-21T23:05:52.9557967Z         },
2026-06-21T23:05:52.9558092Z         "impl": {
2026-06-21T23:05:52.9558319Z           "complete": true,
2026-06-21T23:05:52.9558442Z           "evidence": [
2026-06-21T23:05:52.9558574Z             {
2026-06-21T23:05:52.9558745Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9558884Z               "line": 552
2026-06-21T23:05:52.9559080Z             },
2026-06-21T23:05:52.9559203Z             {
2026-06-21T23:05:52.9559380Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:05:52.9559509Z               "line": 28
2026-06-21T23:05:52.9559637Z             }
2026-06-21T23:05:52.9559762Z           ]
2026-06-21T23:05:52.9559889Z         },
2026-06-21T23:05:52.9560014Z         "int": {
2026-06-21T23:05:52.9560148Z           "complete": false,
2026-06-21T23:05:52.9560291Z           "evidence": []
2026-06-21T23:05:52.9560410Z         },
2026-06-21T23:05:52.9560533Z         "unit": {
2026-06-21T23:05:52.9560673Z           "complete": true,
2026-06-21T23:05:52.9560810Z           "evidence": [
2026-06-21T23:05:52.9560930Z             {
2026-06-21T23:05:52.9561096Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:05:52.9561238Z               "line": 229
2026-06-21T23:05:52.9561352Z             }
2026-06-21T23:05:52.9561483Z           ]
2026-06-21T23:05:52.9561608Z         }
2026-06-21T23:05:52.9561737Z       }
2026-06-21T23:05:52.9561855Z     },
2026-06-21T23:05:52.9561980Z     {
2026-06-21T23:05:52.9562132Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T23:05:52.9562318Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T23:05:52.9562470Z       "requiredStages": [],
2026-06-21T23:05:52.9562596Z       "stages": {
2026-06-21T23:05:52.9562733Z         "doc": {
2026-06-21T23:05:52.9562877Z           "complete": false,
2026-06-21T23:05:52.9563005Z           "evidence": []
2026-06-21T23:05:52.9563134Z         },
2026-06-21T23:05:52.9563263Z         "impl": {
2026-06-21T23:05:52.9563415Z           "complete": false,
2026-06-21T23:05:52.9563540Z           "evidence": []
2026-06-21T23:05:52.9563662Z         },
2026-06-21T23:05:52.9563795Z         "int": {
2026-06-21T23:05:52.9563928Z           "complete": false,
2026-06-21T23:05:52.9564060Z           "evidence": []
2026-06-21T23:05:52.9564189Z         },
2026-06-21T23:05:52.9564317Z         "unit": {
2026-06-21T23:05:52.9564456Z           "complete": false,
2026-06-21T23:05:52.9564590Z           "evidence": []
2026-06-21T23:05:52.9564708Z         }
2026-06-21T23:05:52.9564829Z       }
2026-06-21T23:05:52.9564961Z     },
2026-06-21T23:05:52.9565076Z     {
2026-06-21T23:05:52.9565243Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T23:05:52.9565434Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T23:05:52.9565581Z       "requiredStages": [
2026-06-21T23:05:52.9565715Z         "impl",
2026-06-21T23:05:52.9565834Z         "unit"
2026-06-21T23:05:52.9565953Z       ],
2026-06-21T23:05:52.9566083Z       "stages": {
2026-06-21T23:05:52.9566220Z         "doc": {
2026-06-21T23:05:52.9566355Z           "complete": false,
2026-06-21T23:05:52.9566497Z           "evidence": []
2026-06-21T23:05:52.9566628Z         },
2026-06-21T23:05:52.9566753Z         "impl": {
2026-06-21T23:05:52.9566901Z           "complete": true,
2026-06-21T23:05:52.9567030Z           "evidence": [
2026-06-21T23:05:52.9567159Z             {
2026-06-21T23:05:52.9567306Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T23:05:52.9567440Z               "line": 19
2026-06-21T23:05:52.9567573Z             },
2026-06-21T23:05:52.9567698Z             {
2026-06-21T23:05:52.9567883Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9568018Z               "line": 463
2026-06-21T23:05:52.9568145Z             },
2026-06-21T23:05:52.9568275Z             {
2026-06-21T23:05:52.9568450Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9568580Z               "line": 499
2026-06-21T23:05:52.9568798Z             },
2026-06-21T23:05:52.9568931Z             {
2026-06-21T23:05:52.9569177Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9569463Z               "line": 547
2026-06-21T23:05:52.9569592Z             },
2026-06-21T23:05:52.9569716Z             {
2026-06-21T23:05:52.9569887Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:05:52.9570007Z               "line": 15
2026-06-21T23:05:52.9570134Z             },
2026-06-21T23:05:52.9570255Z             {
2026-06-21T23:05:52.9570422Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:05:52.9570546Z               "line": 48
2026-06-21T23:05:52.9570674Z             },
2026-06-21T23:05:52.9570798Z             {
2026-06-21T23:05:52.9570956Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:05:52.9571089Z               "line": 119
2026-06-21T23:05:52.9571219Z             },
2026-06-21T23:05:52.9571336Z             {
2026-06-21T23:05:52.9571481Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9571623Z               "line": 3948
2026-06-21T23:05:52.9571750Z             }
2026-06-21T23:05:52.9571879Z           ]
2026-06-21T23:05:52.9572010Z         },
2026-06-21T23:05:52.9572140Z         "int": {
2026-06-21T23:05:52.9572279Z           "complete": false,
2026-06-21T23:05:52.9572406Z           "evidence": []
2026-06-21T23:05:52.9572536Z         },
2026-06-21T23:05:52.9572659Z         "unit": {
2026-06-21T23:05:52.9572793Z           "complete": true,
2026-06-21T23:05:52.9572932Z           "evidence": [
2026-06-21T23:05:52.9573055Z             {
2026-06-21T23:05:52.9573231Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9573355Z               "line": 765
2026-06-21T23:05:52.9573485Z             },
2026-06-21T23:05:52.9573608Z             {
2026-06-21T23:05:52.9573761Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:05:52.9573898Z               "line": 165
2026-06-21T23:05:52.9574023Z             },
2026-06-21T23:05:52.9574157Z             {
2026-06-21T23:05:52.9574331Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:05:52.9574470Z               "line": 175
2026-06-21T23:05:52.9574601Z             }
2026-06-21T23:05:52.9574720Z           ]
2026-06-21T23:05:52.9574850Z         }
2026-06-21T23:05:52.9574977Z       }
2026-06-21T23:05:52.9575102Z     },
2026-06-21T23:05:52.9575230Z     {
2026-06-21T23:05:52.9575384Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T23:05:52.9576338Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T23:05:52.9576489Z       "requiredStages": [
2026-06-21T23:05:52.9576614Z         "impl",
2026-06-21T23:05:52.9576737Z         "unit"
2026-06-21T23:05:52.9576866Z       ],
2026-06-21T23:05:52.9577006Z       "stages": {
2026-06-21T23:05:52.9577137Z         "doc": {
2026-06-21T23:05:52.9577280Z           "complete": false,
2026-06-21T23:05:52.9577418Z           "evidence": []
2026-06-21T23:05:52.9577547Z         },
2026-06-21T23:05:52.9577676Z         "impl": {
2026-06-21T23:05:52.9577809Z           "complete": true,
2026-06-21T23:05:52.9577953Z           "evidence": [
2026-06-21T23:05:52.9578072Z             {
2026-06-21T23:05:52.9578244Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9578381Z               "line": 192
2026-06-21T23:05:52.9578505Z             },
2026-06-21T23:05:52.9578630Z             {
2026-06-21T23:05:52.9578796Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9579025Z               "line": 279
2026-06-21T23:05:52.9579149Z             }
2026-06-21T23:05:52.9579269Z           ]
2026-06-21T23:05:52.9579396Z         },
2026-06-21T23:05:52.9579515Z         "int": {
2026-06-21T23:05:52.9579661Z           "complete": false,
2026-06-21T23:05:52.9579905Z           "evidence": []
2026-06-21T23:05:52.9580037Z         },
2026-06-21T23:05:52.9580162Z         "unit": {
2026-06-21T23:05:52.9580399Z           "complete": true,
2026-06-21T23:05:52.9580534Z           "evidence": [
2026-06-21T23:05:52.9580667Z             {
2026-06-21T23:05:52.9580829Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9580967Z               "line": 470
2026-06-21T23:05:52.9581096Z             },
2026-06-21T23:05:52.9581225Z             {
2026-06-21T23:05:52.9581392Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:52.9581530Z               "line": 526
2026-06-21T23:05:52.9581649Z             }
2026-06-21T23:05:52.9581770Z           ]
2026-06-21T23:05:52.9581902Z         }
2026-06-21T23:05:52.9582036Z       }
2026-06-21T23:05:52.9582160Z     },
2026-06-21T23:05:52.9582282Z     {
2026-06-21T23:05:52.9582444Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T23:05:52.9586334Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T23:05:52.9586540Z       "requiredStages": [
2026-06-21T23:05:52.9586672Z         "impl",
2026-06-21T23:05:52.9586802Z         "unit",
2026-06-21T23:05:52.9586936Z         "int"
2026-06-21T23:05:52.9587064Z       ],
2026-06-21T23:05:52.9587198Z       "stages": {
2026-06-21T23:05:52.9587321Z         "doc": {
2026-06-21T23:05:52.9587455Z           "complete": false,
2026-06-21T23:05:52.9587594Z           "evidence": []
2026-06-21T23:05:52.9587721Z         },
2026-06-21T23:05:52.9587845Z         "impl": {
2026-06-21T23:05:52.9587978Z           "complete": true,
2026-06-21T23:05:52.9588111Z           "evidence": [
2026-06-21T23:05:52.9588241Z             {
2026-06-21T23:05:52.9588436Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:52.9588584Z               "line": 116
2026-06-21T23:05:52.9588712Z             },
2026-06-21T23:05:52.9588838Z             {
2026-06-21T23:05:52.9589085Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:52.9589218Z               "line": 132
2026-06-21T23:05:52.9589342Z             },
2026-06-21T23:05:52.9589472Z             {
2026-06-21T23:05:52.9589652Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:52.9589792Z               "line": 434
2026-06-21T23:05:52.9589928Z             },
2026-06-21T23:05:52.9590047Z             {
2026-06-21T23:05:52.9590221Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9590364Z               "line": 139
2026-06-21T23:05:52.9590489Z             },
2026-06-21T23:05:52.9590621Z             {
2026-06-21T23:05:52.9590794Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9590936Z               "line": 326
2026-06-21T23:05:52.9591066Z             },
2026-06-21T23:05:52.9591323Z             {
2026-06-21T23:05:52.9591494Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9591709Z               "line": 555
2026-06-21T23:05:52.9591847Z             }
2026-06-21T23:05:52.9591981Z           ]
2026-06-21T23:05:52.9592128Z         },
2026-06-21T23:05:52.9592252Z         "int": {
2026-06-21T23:05:52.9592391Z           "complete": true,
2026-06-21T23:05:52.9592534Z           "evidence": [
2026-06-21T23:05:52.9592659Z             {
2026-06-21T23:05:52.9592856Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T23:05:52.9592995Z               "line": 32
2026-06-21T23:05:52.9593122Z             }
2026-06-21T23:05:52.9593240Z           ]
2026-06-21T23:05:52.9593374Z         },
2026-06-21T23:05:52.9593512Z         "unit": {
2026-06-21T23:05:52.9593651Z           "complete": true,
2026-06-21T23:05:52.9593779Z           "evidence": [
2026-06-21T23:05:52.9593899Z             {
2026-06-21T23:05:52.9594075Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9594218Z               "line": 625
2026-06-21T23:05:52.9594352Z             },
2026-06-21T23:05:52.9594490Z             {
2026-06-21T23:05:52.9594662Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9594795Z               "line": 646
2026-06-21T23:05:52.9594920Z             },
2026-06-21T23:05:52.9595047Z             {
2026-06-21T23:05:52.9595220Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9595357Z               "line": 662
2026-06-21T23:05:52.9595490Z             },
2026-06-21T23:05:52.9595613Z             {
2026-06-21T23:05:52.9595788Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9595917Z               "line": 680
2026-06-21T23:05:52.9596045Z             },
2026-06-21T23:05:52.9596175Z             {
2026-06-21T23:05:52.9596350Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9596495Z               "line": 704
2026-06-21T23:05:52.9596628Z             }
2026-06-21T23:05:52.9596756Z           ]
2026-06-21T23:05:52.9596881Z         }
2026-06-21T23:05:52.9597018Z       }
2026-06-21T23:05:52.9597148Z     },
2026-06-21T23:05:52.9597281Z     {
2026-06-21T23:05:52.9597434Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T23:05:52.9597643Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T23:05:52.9597787Z       "requiredStages": [
2026-06-21T23:05:52.9597914Z         "impl",
2026-06-21T23:05:52.9598040Z         "unit"
2026-06-21T23:05:52.9598154Z       ],
2026-06-21T23:05:52.9598295Z       "stages": {
2026-06-21T23:05:52.9598429Z         "doc": {
2026-06-21T23:05:52.9598562Z           "complete": false,
2026-06-21T23:05:52.9598696Z           "evidence": []
2026-06-21T23:05:52.9598820Z         },
2026-06-21T23:05:52.9599035Z         "impl": {
2026-06-21T23:05:52.9599178Z           "complete": true,
2026-06-21T23:05:52.9599311Z           "evidence": [
2026-06-21T23:05:52.9599444Z             {
2026-06-21T23:05:52.9599620Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:05:52.9599759Z               "line": 35
2026-06-21T23:05:52.9599878Z             }
2026-06-21T23:05:52.9600008Z           ]
2026-06-21T23:05:52.9600130Z         },
2026-06-21T23:05:52.9600264Z         "int": {
2026-06-21T23:05:52.9600408Z           "complete": false,
2026-06-21T23:05:52.9600540Z           "evidence": []
2026-06-21T23:05:52.9600669Z         },
2026-06-21T23:05:52.9600795Z         "unit": {
2026-06-21T23:05:52.9600934Z           "complete": true,
2026-06-21T23:05:52.9601068Z           "evidence": [
2026-06-21T23:05:52.9601195Z             {
2026-06-21T23:05:52.9601354Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:05:52.9601486Z               "line": 220
2026-06-21T23:05:52.9601617Z             }
2026-06-21T23:05:52.9601739Z           ]
2026-06-21T23:05:52.9601868Z         }
2026-06-21T23:05:52.9601992Z       }
2026-06-21T23:05:52.9602116Z     },
2026-06-21T23:05:52.9602236Z     {
2026-06-21T23:05:52.9602507Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T23:05:52.9605674Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T23:05:52.9605983Z       "requiredStages": [
2026-06-21T23:05:52.9606107Z         "impl",
2026-06-21T23:05:52.9606244Z         "unit",
2026-06-21T23:05:52.9606377Z         "int"
2026-06-21T23:05:52.9606497Z       ],
2026-06-21T23:05:52.9606619Z       "stages": {
2026-06-21T23:05:52.9606745Z         "doc": {
2026-06-21T23:05:52.9606892Z           "complete": false,
2026-06-21T23:05:52.9607026Z           "evidence": []
2026-06-21T23:05:52.9607159Z         },
2026-06-21T23:05:52.9607297Z         "impl": {
2026-06-21T23:05:52.9607436Z           "complete": true,
2026-06-21T23:05:52.9607578Z           "evidence": [
2026-06-21T23:05:52.9607699Z             {
2026-06-21T23:05:52.9607888Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9608018Z               "line": 202
2026-06-21T23:05:52.9608150Z             },
2026-06-21T23:05:52.9608285Z             {
2026-06-21T23:05:52.9608456Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T23:05:52.9608595Z               "line": 107
2026-06-21T23:05:52.9608724Z             },
2026-06-21T23:05:52.9608846Z             {
2026-06-21T23:05:52.9609095Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T23:05:52.9609231Z               "line": 138
2026-06-21T23:05:52.9609370Z             },
2026-06-21T23:05:52.9609503Z             {
2026-06-21T23:05:52.9609681Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9609813Z               "line": 209
2026-06-21T23:05:52.9609948Z             },
2026-06-21T23:05:52.9610072Z             {
2026-06-21T23:05:52.9610248Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9610391Z               "line": 246
2026-06-21T23:05:52.9610510Z             },
2026-06-21T23:05:52.9610639Z             {
2026-06-21T23:05:52.9610806Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:52.9610945Z               "line": 379
2026-06-21T23:05:52.9611072Z             }
2026-06-21T23:05:52.9611210Z           ]
2026-06-21T23:05:52.9611332Z         },
2026-06-21T23:05:52.9611455Z         "int": {
2026-06-21T23:05:52.9611599Z           "complete": true,
2026-06-21T23:05:52.9611727Z           "evidence": [
2026-06-21T23:05:52.9611866Z             {
2026-06-21T23:05:52.9612061Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T23:05:52.9612200Z               "line": 17
2026-06-21T23:05:52.9612332Z             }
2026-06-21T23:05:52.9612457Z           ]
2026-06-21T23:05:52.9612591Z         },
2026-06-21T23:05:52.9612719Z         "unit": {
2026-06-21T23:05:52.9612863Z           "complete": true,
2026-06-21T23:05:52.9612986Z           "evidence": [
2026-06-21T23:05:52.9613121Z             {
2026-06-21T23:05:52.9613291Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:52.9613416Z               "line": 982
2026-06-21T23:05:52.9613659Z             }
2026-06-21T23:05:52.9613789Z           ]
2026-06-21T23:05:52.9613911Z         }
2026-06-21T23:05:52.9614134Z       }
2026-06-21T23:05:52.9614261Z     },
2026-06-21T23:05:52.9614394Z     {
2026-06-21T23:05:52.9614542Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T23:05:52.9614862Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T23:05:52.9615010Z       "requiredStages": [
2026-06-21T23:05:52.9615143Z         "impl",
2026-06-21T23:05:52.9615267Z         "unit"
2026-06-21T23:05:52.9615401Z       ],
2026-06-21T23:05:52.9615524Z       "stages": {
2026-06-21T23:05:52.9615649Z         "doc": {
2026-06-21T23:05:52.9615796Z           "complete": false,
2026-06-21T23:05:52.9615924Z           "evidence": []
2026-06-21T23:05:52.9616054Z         },
2026-06-21T23:05:52.9616182Z         "impl": {
2026-06-21T23:05:52.9616332Z           "complete": true,
2026-06-21T23:05:52.9616468Z           "evidence": [
2026-06-21T23:05:52.9616601Z             {
2026-06-21T23:05:52.9616785Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:52.9616932Z               "line": 405
2026-06-21T23:05:52.9617052Z             },
2026-06-21T23:05:52.9617180Z             {
2026-06-21T23:05:52.9617358Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:52.9617499Z               "line": 409
2026-06-21T23:05:52.9617624Z             },
2026-06-21T23:05:52.9617753Z             {
2026-06-21T23:05:52.9617925Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:52.9618067Z               "line": 156
2026-06-21T23:05:52.9618182Z             }
2026-06-21T23:05:52.9618306Z           ]
2026-06-21T23:05:52.9618434Z         },
2026-06-21T23:05:52.9618560Z         "int": {
2026-06-21T23:05:52.9618710Z           "complete": false,
2026-06-21T23:05:52.9618845Z           "evidence": []
2026-06-21T23:05:52.9619049Z         },
2026-06-21T23:05:52.9619179Z         "unit": {
2026-06-21T23:05:52.9619340Z           "complete": true,
2026-06-21T23:05:52.9619487Z           "evidence": [
2026-06-21T23:05:52.9619617Z             {
2026-06-21T23:05:52.9619796Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:52.9619931Z               "line": 865
2026-06-21T23:05:52.9620063Z             },
2026-06-21T23:05:52.9620189Z             {
2026-06-21T23:05:52.9620369Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:52.9620508Z               "line": 879
2026-06-21T23:05:52.9620637Z             },
2026-06-21T23:05:52.9620760Z             {
2026-06-21T23:05:52.9620917Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:52.9621056Z               "line": 898
2026-06-21T23:05:52.9621190Z             },
2026-06-21T23:05:52.9621313Z             {
2026-06-21T23:05:52.9621477Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:52.9621608Z               "line": 915
2026-06-21T23:05:52.9621742Z             },
2026-06-21T23:05:52.9621874Z             {
2026-06-21T23:05:52.9622064Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T23:05:52.9622203Z               "line": 441
2026-06-21T23:05:52.9622330Z             }
2026-06-21T23:05:52.9622460Z           ]
2026-06-21T23:05:52.9622578Z         }
2026-06-21T23:05:52.9622708Z       }
2026-06-21T23:05:52.9622822Z     },
2026-06-21T23:05:52.9622950Z     {
2026-06-21T23:05:52.9623122Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T23:05:52.9632933Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T23:05:52.9633420Z       "requiredStages": [
2026-06-21T23:05:52.9633558Z         "doc",
2026-06-21T23:05:52.9633687Z         "impl",
2026-06-21T23:05:52.9633815Z         "unit",
2026-06-21T23:05:52.9633945Z         "int"
2026-06-21T23:05:52.9634083Z       ],
2026-06-21T23:05:52.9634212Z       "stages": {
2026-06-21T23:05:52.9634345Z         "doc": {
2026-06-21T23:05:52.9634488Z           "complete": true,
2026-06-21T23:05:52.9634627Z           "evidence": [
2026-06-21T23:05:52.9634750Z             {
2026-06-21T23:05:52.9634899Z               "path": "CONTEXT.md",
2026-06-21T23:05:52.9635045Z               "line": 420
2026-06-21T23:05:52.9635159Z             },
2026-06-21T23:05:52.9635287Z             {
2026-06-21T23:05:52.9635457Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9635586Z               "line": 402
2026-06-21T23:05:52.9635719Z             }
2026-06-21T23:05:52.9635844Z           ]
2026-06-21T23:05:52.9635973Z         },
2026-06-21T23:05:52.9636100Z         "impl": {
2026-06-21T23:05:52.9636244Z           "complete": true,
2026-06-21T23:05:52.9636387Z           "evidence": [
2026-06-21T23:05:52.9636517Z             {
2026-06-21T23:05:52.9636697Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9636827Z               "line": 797
2026-06-21T23:05:52.9636949Z             },
2026-06-21T23:05:52.9637069Z             {
2026-06-21T23:05:52.9637341Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9637485Z               "line": 822
2026-06-21T23:05:52.9637687Z             },
2026-06-21T23:05:52.9637816Z             {
2026-06-21T23:05:52.9637986Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9638120Z               "line": 839
2026-06-21T23:05:52.9638238Z             },
2026-06-21T23:05:52.9638367Z             {
2026-06-21T23:05:52.9638530Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9638658Z               "line": 854
2026-06-21T23:05:52.9638782Z             },
2026-06-21T23:05:52.9638910Z             {
2026-06-21T23:05:52.9639149Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9639282Z               "line": 874
2026-06-21T23:05:52.9639421Z             },
2026-06-21T23:05:52.9639554Z             {
2026-06-21T23:05:52.9639718Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9639855Z               "line": 964
2026-06-21T23:05:52.9639980Z             },
2026-06-21T23:05:52.9640107Z             {
2026-06-21T23:05:52.9640271Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9640418Z               "line": 1016
2026-06-21T23:05:52.9640549Z             },
2026-06-21T23:05:52.9640674Z             {
2026-06-21T23:05:52.9640850Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9640989Z               "line": 1075
2026-06-21T23:05:52.9641122Z             },
2026-06-21T23:05:52.9641246Z             {
2026-06-21T23:05:52.9641423Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:52.9641557Z               "line": 527
2026-06-21T23:05:52.9641685Z             }
2026-06-21T23:05:52.9641818Z           ]
2026-06-21T23:05:52.9641939Z         },
2026-06-21T23:05:52.9642066Z         "int": {
2026-06-21T23:05:52.9642210Z           "complete": true,
2026-06-21T23:05:52.9642343Z           "evidence": [
2026-06-21T23:05:52.9642458Z             {
2026-06-21T23:05:52.9642639Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T23:05:52.9642776Z               "line": 35
2026-06-21T23:05:52.9642909Z             },
2026-06-21T23:05:52.9643031Z             {
2026-06-21T23:05:52.9643203Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T23:05:52.9643341Z               "line": 569
2026-06-21T23:05:52.9643479Z             },
2026-06-21T23:05:52.9643599Z             {
2026-06-21T23:05:52.9643774Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T23:05:52.9643909Z               "line": 590
2026-06-21T23:05:52.9647086Z             }
2026-06-21T23:05:52.9647247Z           ]
2026-06-21T23:05:52.9647377Z         },
2026-06-21T23:05:52.9647509Z         "unit": {
2026-06-21T23:05:52.9647654Z           "complete": true,
2026-06-21T23:05:52.9647796Z           "evidence": [
2026-06-21T23:05:52.9647915Z             {
2026-06-21T23:05:52.9648101Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9648252Z               "line": 1202
2026-06-21T23:05:52.9648386Z             },
2026-06-21T23:05:52.9648513Z             {
2026-06-21T23:05:52.9648690Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9648836Z               "line": 1246
2026-06-21T23:05:52.9649033Z             },
2026-06-21T23:05:52.9649165Z             {
2026-06-21T23:05:52.9649333Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9649470Z               "line": 1260
2026-06-21T23:05:52.9649601Z             },
2026-06-21T23:05:52.9649724Z             {
2026-06-21T23:05:52.9649896Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9650033Z               "line": 1278
2026-06-21T23:05:52.9650162Z             },
2026-06-21T23:05:52.9650288Z             {
2026-06-21T23:05:52.9650448Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9650588Z               "line": 1302
2026-06-21T23:05:52.9650705Z             },
2026-06-21T23:05:52.9650973Z             {
2026-06-21T23:05:52.9651148Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9651391Z               "line": 1529
2026-06-21T23:05:52.9651516Z             }
2026-06-21T23:05:52.9651645Z           ]
2026-06-21T23:05:52.9651777Z         }
2026-06-21T23:05:52.9651902Z       }
2026-06-21T23:05:52.9652035Z     },
2026-06-21T23:05:52.9652160Z     {
2026-06-21T23:05:52.9652326Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T23:05:52.9654592Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T23:05:52.9654765Z       "requiredStages": [
2026-06-21T23:05:52.9654893Z         "unit",
2026-06-21T23:05:52.9655027Z         "int"
2026-06-21T23:05:52.9655155Z       ],
2026-06-21T23:05:52.9655279Z       "stages": {
2026-06-21T23:05:52.9655404Z         "doc": {
2026-06-21T23:05:52.9655551Z           "complete": true,
2026-06-21T23:05:52.9655681Z           "evidence": [
2026-06-21T23:05:52.9655803Z             {
2026-06-21T23:05:52.9655971Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9656104Z               "line": 381
2026-06-21T23:05:52.9656236Z             }
2026-06-21T23:05:52.9656360Z           ]
2026-06-21T23:05:52.9656492Z         },
2026-06-21T23:05:52.9656621Z         "impl": {
2026-06-21T23:05:52.9656755Z           "complete": true,
2026-06-21T23:05:52.9656897Z           "evidence": [
2026-06-21T23:05:52.9657027Z             {
2026-06-21T23:05:52.9657202Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9657346Z               "line": 143
2026-06-21T23:05:52.9657474Z             }
2026-06-21T23:05:52.9657603Z           ]
2026-06-21T23:05:52.9657731Z         },
2026-06-21T23:05:52.9657856Z         "int": {
2026-06-21T23:05:52.9657999Z           "complete": true,
2026-06-21T23:05:52.9658127Z           "evidence": [
2026-06-21T23:05:52.9658252Z             {
2026-06-21T23:05:52.9658437Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:52.9658577Z               "line": 1045
2026-06-21T23:05:52.9658708Z             }
2026-06-21T23:05:52.9658836Z           ]
2026-06-21T23:05:52.9659039Z         },
2026-06-21T23:05:52.9659173Z         "unit": {
2026-06-21T23:05:52.9659313Z           "complete": true,
2026-06-21T23:05:52.9659463Z           "evidence": [
2026-06-21T23:05:52.9659593Z             {
2026-06-21T23:05:52.9659769Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9659908Z               "line": 2488
2026-06-21T23:05:52.9660035Z             }
2026-06-21T23:05:52.9660165Z           ]
2026-06-21T23:05:52.9660288Z         }
2026-06-21T23:05:52.9660417Z       }
2026-06-21T23:05:52.9660538Z     },
2026-06-21T23:05:52.9660670Z     {
2026-06-21T23:05:52.9660848Z       "id": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
2026-06-21T23:05:52.9665077Z       "title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled frames out between reads, BEFORE any channel-overflow eviction → NO KIND_VIEWER_EVICTED marker) must SNAP TO LIVE (accept-and-advance via dedup-below + snap-above), NOT fatal with output gap (brain.rs:624/628 legacy reject-gap). ROOT (v0.13.0 forkpty, post-b4+skip-to-live): serve_attach subscribes a viewer via brain.attach_as(Viewer) leaving session_cursors EMPTY → the viewer serve-brain uses the LEGACY reject-gap → a PRE-eviction ring-roll forward-gap FATALS read_event → serve_attach returns → forwarding stops → attach_received_pty_output=FALSE (a_journaled / p0_paste / attach.rs:1071 wedged_viewer, Linux forkpty; Windows ConPTY floods slower → MASKED false-green). DISTINCT from REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT (the POST-eviction re-subscribe-from-floor): this is PRE-eviction gap-tolerance while STILL subscribed. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative); the CONTROLLER keeps strict reject-gap (exactly-once resume). FIX: arm snap-above at initial viewer attach (attach_as_viewer_snap = attach_as(Viewer) + session_cursors.insert(session_id, from_seq)); the two viewer-survival mechanisms COMPOSE — this tolerates pre-eviction ring-roll gaps, REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT recovers post-eviction. (v0.13.0)",
2026-06-21T23:05:52.9665458Z       "requiredStages": [
2026-06-21T23:05:52.9665587Z         "doc",
2026-06-21T23:05:52.9665720Z         "impl",
2026-06-21T23:05:52.9665843Z         "unit"
2026-06-21T23:05:52.9665974Z       ],
2026-06-21T23:05:52.9666102Z       "stages": {
2026-06-21T23:05:52.9666241Z         "doc": {
2026-06-21T23:05:52.9666383Z           "complete": true,
2026-06-21T23:05:52.9666522Z           "evidence": [
2026-06-21T23:05:52.9666660Z             {
2026-06-21T23:05:52.9666806Z               "path": "CONTEXT.md",
2026-06-21T23:05:52.9666944Z               "line": 342
2026-06-21T23:05:52.9667071Z             }
2026-06-21T23:05:52.9667200Z           ]
2026-06-21T23:05:52.9667320Z         },
2026-06-21T23:05:52.9667442Z         "impl": {
2026-06-21T23:05:52.9667592Z           "complete": true,
2026-06-21T23:05:52.9667724Z           "evidence": [
2026-06-21T23:05:52.9667849Z             {
2026-06-21T23:05:52.9668024Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:52.9668164Z               "line": 333
2026-06-21T23:05:52.9668287Z             },
2026-06-21T23:05:52.9668411Z             {
2026-06-21T23:05:52.9668597Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9668725Z               "line": 892
2026-06-21T23:05:52.9668855Z             }
2026-06-21T23:05:52.9669045Z           ]
2026-06-21T23:05:52.9669165Z         },
2026-06-21T23:05:52.9669292Z         "int": {
2026-06-21T23:05:52.9669440Z           "complete": false,
2026-06-21T23:05:52.9669581Z           "evidence": []
2026-06-21T23:05:52.9669695Z         },
2026-06-21T23:05:52.9669820Z         "unit": {
2026-06-21T23:05:52.9669952Z           "complete": true,
2026-06-21T23:05:52.9670081Z           "evidence": [
2026-06-21T23:05:52.9670206Z             {
2026-06-21T23:05:52.9670377Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:52.9670510Z               "line": 1682
2026-06-21T23:05:52.9670624Z             }
2026-06-21T23:05:52.9670754Z           ]
2026-06-21T23:05:52.9670883Z         }
2026-06-21T23:05:52.9671016Z       }
2026-06-21T23:05:52.9671135Z     },
2026-06-21T23:05:52.9671268Z     {
2026-06-21T23:05:52.9671501Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-21T23:05:52.9676796Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-21T23:05:52.9677234Z       "requiredStages": [
2026-06-21T23:05:52.9677361Z         "impl",
2026-06-21T23:05:52.9677485Z         "unit"
2026-06-21T23:05:52.9677612Z       ],
2026-06-21T23:05:52.9677741Z       "stages": {
2026-06-21T23:05:52.9677870Z         "doc": {
2026-06-21T23:05:52.9678012Z           "complete": false,
2026-06-21T23:05:52.9678156Z           "evidence": []
2026-06-21T23:05:52.9678279Z         },
2026-06-21T23:05:52.9678405Z         "impl": {
2026-06-21T23:05:52.9678552Z           "complete": true,
2026-06-21T23:05:52.9678680Z           "evidence": [
2026-06-21T23:05:52.9678809Z             {
2026-06-21T23:05:52.9679063Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9679204Z               "line": 365
2026-06-21T23:05:52.9679329Z             },
2026-06-21T23:05:52.9679448Z             {
2026-06-21T23:05:52.9679625Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9679763Z               "line": 821
2026-06-21T23:05:52.9679885Z             }
2026-06-21T23:05:52.9680010Z           ]
2026-06-21T23:05:52.9680141Z         },
2026-06-21T23:05:52.9680283Z         "int": {
2026-06-21T23:05:52.9680418Z           "complete": false,
2026-06-21T23:05:52.9680560Z           "evidence": []
2026-06-21T23:05:52.9680680Z         },
2026-06-21T23:05:52.9680813Z         "unit": {
2026-06-21T23:05:52.9680952Z           "complete": true,
2026-06-21T23:05:52.9681075Z           "evidence": [
2026-06-21T23:05:52.9681208Z             {
2026-06-21T23:05:52.9681376Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9681509Z               "line": 2703
2026-06-21T23:05:52.9681634Z             },
2026-06-21T23:05:52.9681767Z             {
2026-06-21T23:05:52.9681934Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:52.9682057Z               "line": 2772
2026-06-21T23:05:52.9682187Z             }
2026-06-21T23:05:52.9682306Z           ]
2026-06-21T23:05:52.9682439Z         }
2026-06-21T23:05:52.9682555Z       }
2026-06-21T23:05:52.9682677Z     },
2026-06-21T23:05:52.9682800Z     {
2026-06-21T23:05:52.9682958Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T23:05:52.9683836Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T23:05:52.9683993Z       "requiredStages": [
2026-06-21T23:05:52.9684111Z         "doc",
2026-06-21T23:05:52.9684241Z         "impl",
2026-06-21T23:05:52.9684373Z         "unit"
2026-06-21T23:05:52.9684504Z       ],
2026-06-21T23:05:52.9684635Z       "stages": {
2026-06-21T23:05:52.9684755Z         "doc": {
2026-06-21T23:05:52.9684889Z           "complete": true,
2026-06-21T23:05:52.9685021Z           "evidence": [
2026-06-21T23:05:52.9685150Z             {
2026-06-21T23:05:52.9685300Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9685438Z               "line": 366
2026-06-21T23:05:52.9685559Z             }
2026-06-21T23:05:52.9685681Z           ]
2026-06-21T23:05:52.9685920Z         },
2026-06-21T23:05:52.9686054Z         "impl": {
2026-06-21T23:05:52.9686183Z           "complete": true,
2026-06-21T23:05:52.9686422Z           "evidence": [
2026-06-21T23:05:52.9686550Z             {
2026-06-21T23:05:52.9686732Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:05:52.9686869Z               "line": 87
2026-06-21T23:05:52.9686998Z             },
2026-06-21T23:05:52.9687117Z             {
2026-06-21T23:05:52.9687279Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:52.9687418Z               "line": 203
2026-06-21T23:05:52.9687546Z             },
2026-06-21T23:05:52.9687671Z             {
2026-06-21T23:05:52.9687846Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:52.9687979Z               "line": 55
2026-06-21T23:05:52.9688106Z             },
2026-06-21T23:05:52.9688220Z             {
2026-06-21T23:05:52.9688397Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:52.9688530Z               "line": 31
2026-06-21T23:05:52.9688660Z             },
2026-06-21T23:05:52.9688787Z             {
2026-06-21T23:05:52.9689050Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:52.9689188Z               "line": 446
2026-06-21T23:05:52.9689317Z             },
2026-06-21T23:05:52.9689450Z             {
2026-06-21T23:05:52.9689623Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:05:52.9689750Z               "line": 95
2026-06-21T23:05:52.9689880Z             },
2026-06-21T23:05:52.9690004Z             {
2026-06-21T23:05:52.9690175Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:52.9690299Z               "line": 29
2026-06-21T23:05:52.9690422Z             },
2026-06-21T23:05:52.9690555Z             {
2026-06-21T23:05:52.9690720Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:52.9690858Z               "line": 104
2026-06-21T23:05:52.9690983Z             },
2026-06-21T23:05:52.9691110Z             {
2026-06-21T23:05:52.9691288Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9691429Z               "line": 208
2026-06-21T23:05:52.9691560Z             },
2026-06-21T23:05:52.9691683Z             {
2026-06-21T23:05:52.9691860Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T23:05:52.9691993Z               "line": 28
2026-06-21T23:05:52.9692131Z             },
2026-06-21T23:05:52.9692256Z             {
2026-06-21T23:05:52.9692437Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T23:05:52.9692575Z               "line": 74
2026-06-21T23:05:52.9692698Z             },
2026-06-21T23:05:52.9692833Z             {
2026-06-21T23:05:52.9693009Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T23:05:52.9693139Z               "line": 32
2026-06-21T23:05:52.9693265Z             },
2026-06-21T23:05:52.9693393Z             {
2026-06-21T23:05:52.9693557Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:52.9693684Z               "line": 40
2026-06-21T23:05:52.9693814Z             },
2026-06-21T23:05:52.9693947Z             {
2026-06-21T23:05:52.9694110Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:52.9694257Z               "line": 184
2026-06-21T23:05:52.9694371Z             },
2026-06-21T23:05:52.9694505Z             {
2026-06-21T23:05:52.9694667Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:05:52.9694806Z               "line": 61
2026-06-21T23:05:52.9694929Z             },
2026-06-21T23:05:52.9695059Z             {
2026-06-21T23:05:52.9695230Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:05:52.9695364Z               "line": 131
2026-06-21T23:05:52.9695496Z             },
2026-06-21T23:05:52.9695623Z             {
2026-06-21T23:05:52.9695790Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:05:52.9695931Z               "line": 223
2026-06-21T23:05:52.9696066Z             },
2026-06-21T23:05:52.9696299Z             {
2026-06-21T23:05:52.9696462Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T23:05:52.9696696Z               "line": 37
2026-06-21T23:05:52.9696809Z             },
2026-06-21T23:05:52.9696934Z             {
2026-06-21T23:05:52.9697110Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:05:52.9697243Z               "line": 38
2026-06-21T23:05:52.9697377Z             },
2026-06-21T23:05:52.9697500Z             {
2026-06-21T23:05:52.9697673Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T23:05:52.9697805Z               "line": 36
2026-06-21T23:05:52.9697936Z             },
2026-06-21T23:05:52.9698058Z             {
2026-06-21T23:05:52.9698227Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T23:05:52.9698368Z               "line": 40
2026-06-21T23:05:52.9698486Z             }
2026-06-21T23:05:52.9698611Z           ]
2026-06-21T23:05:52.9698737Z         },
2026-06-21T23:05:52.9698875Z         "int": {
2026-06-21T23:05:52.9699104Z           "complete": false,
2026-06-21T23:05:52.9699248Z           "evidence": []
2026-06-21T23:05:52.9699385Z         },
2026-06-21T23:05:52.9699510Z         "unit": {
2026-06-21T23:05:52.9699653Z           "complete": true,
2026-06-21T23:05:52.9699781Z           "evidence": [
2026-06-21T23:05:52.9699906Z             {
2026-06-21T23:05:52.9700077Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:05:52.9700211Z               "line": 212
2026-06-21T23:05:52.9700334Z             },
2026-06-21T23:05:52.9700459Z             {
2026-06-21T23:05:52.9700644Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T23:05:52.9700774Z               "line": 136
2026-06-21T23:05:52.9700902Z             },
2026-06-21T23:05:52.9701024Z             {
2026-06-21T23:05:52.9701210Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T23:05:52.9701351Z               "line": 685
2026-06-21T23:05:52.9701471Z             },
2026-06-21T23:05:52.9701604Z             {
2026-06-21T23:05:52.9701772Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T23:05:52.9701919Z               "line": 224
2026-06-21T23:05:52.9702038Z             },
2026-06-21T23:05:52.9702158Z             {
2026-06-21T23:05:52.9702319Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T23:05:52.9702453Z               "line": 206
2026-06-21T23:05:52.9702586Z             },
2026-06-21T23:05:52.9702706Z             {
2026-06-21T23:05:52.9702868Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T23:05:52.9703007Z               "line": 112
2026-06-21T23:05:52.9703135Z             },
2026-06-21T23:05:52.9703268Z             {
2026-06-21T23:05:52.9703431Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T23:05:52.9703559Z               "line": 157
2026-06-21T23:05:52.9703670Z             },
2026-06-21T23:05:52.9703793Z             {
2026-06-21T23:05:52.9703963Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:05:52.9704103Z               "line": 215
2026-06-21T23:05:52.9704235Z             },
2026-06-21T23:05:52.9704365Z             {
2026-06-21T23:05:52.9704530Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T23:05:52.9704660Z               "line": 141
2026-06-21T23:05:52.9704794Z             },
2026-06-21T23:05:52.9704922Z             {
2026-06-21T23:05:52.9705093Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T23:05:52.9705232Z               "line": 162
2026-06-21T23:05:52.9705361Z             }
2026-06-21T23:05:52.9705489Z           ]
2026-06-21T23:05:52.9705624Z         }
2026-06-21T23:05:52.9705751Z       }
2026-06-21T23:05:52.9705881Z     },
2026-06-21T23:05:52.9706005Z     {
2026-06-21T23:05:52.9706184Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T23:05:52.9708089Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T23:05:52.9708609Z       "requiredStages": [
2026-06-21T23:05:52.9708738Z         "doc",
2026-06-21T23:05:52.9708868Z         "impl",
2026-06-21T23:05:52.9709075Z         "unit",
2026-06-21T23:05:52.9709204Z         "int"
2026-06-21T23:05:52.9709330Z       ],
2026-06-21T23:05:52.9709459Z       "stages": {
2026-06-21T23:05:52.9709588Z         "doc": {
2026-06-21T23:05:52.9709731Z           "complete": true,
2026-06-21T23:05:52.9709865Z           "evidence": [
2026-06-21T23:05:52.9709988Z             {
2026-06-21T23:05:52.9710151Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:52.9710303Z               "line": 250
2026-06-21T23:05:52.9710433Z             }
2026-06-21T23:05:52.9710566Z           ]
2026-06-21T23:05:52.9710695Z         },
2026-06-21T23:05:52.9710823Z         "impl": {
2026-06-21T23:05:52.9710966Z           "complete": true,
2026-06-21T23:05:52.9711101Z           "evidence": [
2026-06-21T23:05:52.9711223Z             {
2026-06-21T23:05:52.9711387Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T23:05:52.9711523Z               "line": 135
2026-06-21T23:05:52.9711652Z             },
2026-06-21T23:05:52.9711779Z             {
2026-06-21T23:05:52.9711944Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T23:05:52.9712070Z               "line": 157
2026-06-21T23:05:52.9712197Z             }
2026-06-21T23:05:52.9712322Z           ]
2026-06-21T23:05:52.9712441Z         },
2026-06-21T23:05:52.9712574Z         "int": {
2026-06-21T23:05:52.9712713Z           "complete": true,
2026-06-21T23:05:52.9712855Z           "evidence": [
2026-06-21T23:05:52.9712976Z             {
2026-06-21T23:05:52.9713156Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T23:05:52.9713301Z               "line": 15
2026-06-21T23:05:52.9713428Z             }
2026-06-21T23:05:52.9713557Z           ]
2026-06-21T23:05:52.9713681Z         },
2026-06-21T23:05:52.9713809Z         "unit": {
2026-06-21T23:05:52.9713954Z           "complete": true,
2026-06-21T23:05:52.9714090Z           "evidence": [
2026-06-21T23:05:52.9714206Z             {
2026-06-21T23:05:52.9714381Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T23:05:52.9714514Z               "line": 233
2026-06-21T23:05:52.9714644Z             }
2026-06-21T23:05:52.9714767Z           ]
2026-06-21T23:05:52.9714896Z         }
2026-06-21T23:05:52.9715029Z       }
2026-06-21T23:05:52.9715158Z     },
2026-06-21T23:05:52.9715282Z     {
2026-06-21T23:05:52.9715458Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T23:05:52.9715663Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T23:05:52.9715816Z       "requiredStages": [
2026-06-21T23:05:52.9715949Z         "impl",
2026-06-21T23:05:52.9716082Z         "unit"
2026-06-21T23:05:52.9716217Z       ],
2026-06-21T23:05:52.9716345Z       "stages": {
2026-06-21T23:05:52.9716480Z         "doc": {
2026-06-21T23:05:52.9716621Z           "complete": false,
2026-06-21T23:05:52.9716768Z           "evidence": []
2026-06-21T23:05:52.9716896Z         },
2026-06-21T23:05:52.9717019Z         "impl": {
2026-06-21T23:05:52.9717172Z           "complete": true,
2026-06-21T23:05:52.9717296Z           "evidence": [
2026-06-21T23:05:52.9717429Z             {
2026-06-21T23:05:52.9717629Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:52.9717773Z               "line": 95
2026-06-21T23:05:52.9717892Z             },
2026-06-21T23:05:52.9718015Z             {
2026-06-21T23:05:52.9718187Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.9718315Z               "line": 117
2026-06-21T23:05:52.9718555Z             }
2026-06-21T23:05:52.9718683Z           ]
2026-06-21T23:05:52.9719236Z         },
2026-06-21T23:05:52.9719366Z         "int": {
2026-06-21T23:05:52.9719517Z           "complete": false,
2026-06-21T23:05:52.9719650Z           "evidence": []
2026-06-21T23:05:52.9719778Z         },
2026-06-21T23:05:52.9719909Z         "unit": {
2026-06-21T23:05:52.9720039Z           "complete": true,
2026-06-21T23:05:52.9720172Z           "evidence": [
2026-06-21T23:05:52.9720296Z             {
2026-06-21T23:05:52.9720468Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:52.9720601Z               "line": 250
2026-06-21T23:05:52.9720730Z             },
2026-06-21T23:05:52.9720863Z             {
2026-06-21T23:05:52.9721012Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:05:52.9721154Z               "line": 412
2026-06-21T23:05:52.9721279Z             },
2026-06-21T23:05:52.9721407Z             {
2026-06-21T23:05:52.9721589Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.9721712Z               "line": 611
2026-06-21T23:05:52.9721836Z             },
2026-06-21T23:05:52.9721962Z             {
2026-06-21T23:05:52.9722126Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.9722259Z               "line": 669
2026-06-21T23:05:52.9722391Z             }
2026-06-21T23:05:52.9722524Z           ]
2026-06-21T23:05:52.9722644Z         }
2026-06-21T23:05:52.9722772Z       }
2026-06-21T23:05:52.9722897Z     },
2026-06-21T23:05:52.9723025Z     {
2026-06-21T23:05:52.9723178Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T23:05:52.9725670Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T23:05:52.9725857Z       "requiredStages": [
2026-06-21T23:05:52.9725994Z         "impl",
2026-06-21T23:05:52.9726115Z         "unit",
2026-06-21T23:05:52.9726247Z         "int"
2026-06-21T23:05:52.9726372Z       ],
2026-06-21T23:05:52.9726514Z       "stages": {
2026-06-21T23:05:52.9726647Z         "doc": {
2026-06-21T23:05:52.9726791Z           "complete": false,
2026-06-21T23:05:52.9726924Z           "evidence": []
2026-06-21T23:05:52.9727055Z         },
2026-06-21T23:05:52.9727181Z         "impl": {
2026-06-21T23:05:52.9727328Z           "complete": true,
2026-06-21T23:05:52.9727470Z           "evidence": [
2026-06-21T23:05:52.9727602Z             {
2026-06-21T23:05:52.9727775Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9727907Z               "line": 925
2026-06-21T23:05:52.9728042Z             },
2026-06-21T23:05:52.9728166Z             {
2026-06-21T23:05:52.9728338Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9728475Z               "line": 994
2026-06-21T23:05:52.9728604Z             }
2026-06-21T23:05:52.9728738Z           ]
2026-06-21T23:05:52.9728852Z         },
2026-06-21T23:05:52.9729090Z         "int": {
2026-06-21T23:05:52.9729224Z           "complete": true,
2026-06-21T23:05:52.9729363Z           "evidence": [
2026-06-21T23:05:52.9729505Z             {
2026-06-21T23:05:52.9729682Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T23:05:52.9729820Z               "line": 187
2026-06-21T23:05:52.9729950Z             },
2026-06-21T23:05:52.9730186Z             {
2026-06-21T23:05:52.9730361Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T23:05:52.9730589Z               "line": 348
2026-06-21T23:05:52.9730713Z             }
2026-06-21T23:05:52.9730841Z           ]
2026-06-21T23:05:52.9730971Z         },
2026-06-21T23:05:52.9731108Z         "unit": {
2026-06-21T23:05:52.9731248Z           "complete": true,
2026-06-21T23:05:52.9731385Z           "evidence": [
2026-06-21T23:05:52.9731515Z             {
2026-06-21T23:05:52.9731686Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:52.9731820Z               "line": 1206
2026-06-21T23:05:52.9731948Z             },
2026-06-21T23:05:52.9732077Z             {
2026-06-21T23:05:52.9732231Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9732372Z               "line": 8116
2026-06-21T23:05:52.9732498Z             }
2026-06-21T23:05:52.9732634Z           ]
2026-06-21T23:05:52.9732752Z         }
2026-06-21T23:05:52.9732877Z       }
2026-06-21T23:05:52.9733012Z     },
2026-06-21T23:05:52.9733142Z     {
2026-06-21T23:05:52.9733303Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T23:05:52.9733537Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T23:05:52.9733685Z       "requiredStages": [
2026-06-21T23:05:52.9733819Z         "impl",
2026-06-21T23:05:52.9733942Z         "unit"
2026-06-21T23:05:52.9734077Z       ],
2026-06-21T23:05:52.9734205Z       "stages": {
2026-06-21T23:05:52.9734338Z         "doc": {
2026-06-21T23:05:52.9734477Z           "complete": false,
2026-06-21T23:05:52.9734605Z           "evidence": []
2026-06-21T23:05:52.9734730Z         },
2026-06-21T23:05:52.9734867Z         "impl": {
2026-06-21T23:05:52.9735021Z           "complete": true,
2026-06-21T23:05:52.9735149Z           "evidence": [
2026-06-21T23:05:52.9735288Z             {
2026-06-21T23:05:52.9735455Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9735600Z               "line": 262
2026-06-21T23:05:52.9735725Z             },
2026-06-21T23:05:52.9735854Z             {
2026-06-21T23:05:52.9736016Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9736154Z               "line": 307
2026-06-21T23:05:52.9736283Z             },
2026-06-21T23:05:52.9736407Z             {
2026-06-21T23:05:52.9736578Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9736712Z               "line": 319
2026-06-21T23:05:52.9736840Z             }
2026-06-21T23:05:52.9736961Z           ]
2026-06-21T23:05:52.9737089Z         },
2026-06-21T23:05:52.9737222Z         "int": {
2026-06-21T23:05:52.9737366Z           "complete": false,
2026-06-21T23:05:52.9737494Z           "evidence": []
2026-06-21T23:05:52.9737624Z         },
2026-06-21T23:05:52.9737751Z         "unit": {
2026-06-21T23:05:52.9737898Z           "complete": true,
2026-06-21T23:05:52.9738026Z           "evidence": [
2026-06-21T23:05:52.9738157Z             {
2026-06-21T23:05:52.9738321Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9738458Z               "line": 455
2026-06-21T23:05:52.9738588Z             },
2026-06-21T23:05:52.9738730Z             {
2026-06-21T23:05:52.9738898Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:52.9739116Z               "line": 499
2026-06-21T23:05:52.9739246Z             }
2026-06-21T23:05:52.9739374Z           ]
2026-06-21T23:05:52.9739503Z         }
2026-06-21T23:05:52.9739627Z       }
2026-06-21T23:05:52.9739755Z     },
2026-06-21T23:05:52.9739890Z     {
2026-06-21T23:05:52.9740037Z       "id": "REQ-HOST-RUN-1",
2026-06-21T23:05:52.9742527Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T23:05:52.9742894Z       "requiredStages": [
2026-06-21T23:05:52.9743025Z         "impl",
2026-06-21T23:05:52.9743152Z         "unit",
2026-06-21T23:05:52.9743275Z         "int"
2026-06-21T23:05:52.9743403Z       ],
2026-06-21T23:05:52.9743525Z       "stages": {
2026-06-21T23:05:52.9743644Z         "doc": {
2026-06-21T23:05:52.9743794Z           "complete": false,
2026-06-21T23:05:52.9743930Z           "evidence": []
2026-06-21T23:05:52.9744060Z         },
2026-06-21T23:05:52.9744188Z         "impl": {
2026-06-21T23:05:52.9744337Z           "complete": true,
2026-06-21T23:05:52.9744460Z           "evidence": [
2026-06-21T23:05:52.9744588Z             {
2026-06-21T23:05:52.9744779Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:52.9744922Z               "line": 30
2026-06-21T23:05:52.9745052Z             },
2026-06-21T23:05:52.9745179Z             {
2026-06-21T23:05:52.9745366Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:52.9745504Z               "line": 76
2026-06-21T23:05:52.9745629Z             },
2026-06-21T23:05:52.9745761Z             {
2026-06-21T23:05:52.9745944Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:52.9746075Z               "line": 181
2026-06-21T23:05:52.9746223Z             },
2026-06-21T23:05:52.9746344Z             {
2026-06-21T23:05:52.9746518Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9746652Z               "line": 1266
2026-06-21T23:05:52.9746781Z             }
2026-06-21T23:05:52.9746901Z           ]
2026-06-21T23:05:52.9747034Z         },
2026-06-21T23:05:52.9747163Z         "int": {
2026-06-21T23:05:52.9747310Z           "complete": true,
2026-06-21T23:05:52.9747444Z           "evidence": [
2026-06-21T23:05:52.9747597Z             {
2026-06-21T23:05:52.9747768Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:52.9747907Z               "line": 288
2026-06-21T23:05:52.9748049Z             }
2026-06-21T23:05:52.9748245Z           ]
2026-06-21T23:05:52.9748424Z         },
2026-06-21T23:05:52.9748572Z         "unit": {
2026-06-21T23:05:52.9748713Z           "complete": true,
2026-06-21T23:05:52.9748867Z           "evidence": [
2026-06-21T23:05:52.9749071Z             {
2026-06-21T23:05:52.9749257Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:52.9749395Z               "line": 229
2026-06-21T23:05:52.9749515Z             },
2026-06-21T23:05:52.9749653Z             {
2026-06-21T23:05:52.9749829Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:52.9749967Z               "line": 296
2026-06-21T23:05:52.9750093Z             },
2026-06-21T23:05:52.9750221Z             {
2026-06-21T23:05:52.9750398Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:52.9750539Z               "line": 419
2026-06-21T23:05:52.9750654Z             }
2026-06-21T23:05:52.9750784Z           ]
2026-06-21T23:05:52.9750912Z         }
2026-06-21T23:05:52.9751037Z       }
2026-06-21T23:05:52.9751164Z     },
2026-06-21T23:05:52.9751282Z     {
2026-06-21T23:05:52.9751425Z       "id": "REQ-HOST-RUN-2",
2026-06-21T23:05:52.9753226Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T23:05:52.9753599Z       "requiredStages": [
2026-06-21T23:05:52.9753726Z         "impl",
2026-06-21T23:05:52.9753859Z         "unit",
2026-06-21T23:05:52.9753983Z         "int"
2026-06-21T23:05:52.9754114Z       ],
2026-06-21T23:05:52.9754238Z       "stages": {
2026-06-21T23:05:52.9754368Z         "doc": {
2026-06-21T23:05:52.9754524Z           "complete": false,
2026-06-21T23:05:52.9754672Z           "evidence": []
2026-06-21T23:05:52.9754810Z         },
2026-06-21T23:05:52.9754939Z         "impl": {
2026-06-21T23:05:52.9755110Z           "complete": true,
2026-06-21T23:05:52.9755264Z           "evidence": [
2026-06-21T23:05:52.9755397Z             {
2026-06-21T23:05:52.9755593Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:52.9755735Z               "line": 182
2026-06-21T23:05:52.9755865Z             },
2026-06-21T23:05:52.9755997Z             {
2026-06-21T23:05:52.9756166Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T23:05:52.9756321Z               "line": 113
2026-06-21T23:05:52.9756466Z             }
2026-06-21T23:05:52.9756654Z           ]
2026-06-21T23:05:52.9756788Z         },
2026-06-21T23:05:52.9756918Z         "int": {
2026-06-21T23:05:52.9757059Z           "complete": true,
2026-06-21T23:05:52.9757194Z           "evidence": [
2026-06-21T23:05:52.9757326Z             {
2026-06-21T23:05:52.9757499Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:52.9757636Z               "line": 575
2026-06-21T23:05:52.9757757Z             }
2026-06-21T23:05:52.9757884Z           ]
2026-06-21T23:05:52.9758018Z         },
2026-06-21T23:05:52.9758143Z         "unit": {
2026-06-21T23:05:52.9758280Z           "complete": true,
2026-06-21T23:05:52.9758415Z           "evidence": [
2026-06-21T23:05:52.9758542Z             {
2026-06-21T23:05:52.9758720Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T23:05:52.9758857Z               "line": 86
2026-06-21T23:05:52.9759076Z             }
2026-06-21T23:05:52.9759207Z           ]
2026-06-21T23:05:52.9765108Z         }
2026-06-21T23:05:52.9765275Z       }
2026-06-21T23:05:52.9765394Z     },
2026-06-21T23:05:52.9765523Z     {
2026-06-21T23:05:52.9765661Z       "id": "REQ-INFRA-1",
2026-06-21T23:05:52.9765919Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T23:05:52.9766087Z       "requiredStages": [],
2026-06-21T23:05:52.9766214Z       "stages": {
2026-06-21T23:05:52.9766348Z         "doc": {
2026-06-21T23:05:52.9766486Z           "complete": false,
2026-06-21T23:05:52.9766629Z           "evidence": []
2026-06-21T23:05:52.9766759Z         },
2026-06-21T23:05:52.9766896Z         "impl": {
2026-06-21T23:05:52.9767036Z           "complete": false,
2026-06-21T23:05:52.9767172Z           "evidence": []
2026-06-21T23:05:52.9767300Z         },
2026-06-21T23:05:52.9767435Z         "int": {
2026-06-21T23:05:52.9767581Z           "complete": false,
2026-06-21T23:05:52.9767716Z           "evidence": []
2026-06-21T23:05:52.9767840Z         },
2026-06-21T23:05:52.9767968Z         "unit": {
2026-06-21T23:05:52.9768106Z           "complete": false,
2026-06-21T23:05:52.9768249Z           "evidence": []
2026-06-21T23:05:52.9768374Z         }
2026-06-21T23:05:52.9768502Z       }
2026-06-21T23:05:52.9768627Z     },
2026-06-21T23:05:52.9768750Z     {
2026-06-21T23:05:52.9768878Z       "id": "REQ-INST-1",
2026-06-21T23:05:52.9769193Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T23:05:52.9769356Z       "requiredStages": [],
2026-06-21T23:05:52.9769488Z       "stages": {
2026-06-21T23:05:52.9769621Z         "doc": {
2026-06-21T23:05:52.9769767Z           "complete": false,
2026-06-21T23:05:52.9769896Z           "evidence": []
2026-06-21T23:05:52.9770026Z         },
2026-06-21T23:05:52.9770158Z         "impl": {
2026-06-21T23:05:52.9770297Z           "complete": false,
2026-06-21T23:05:52.9770607Z           "evidence": []
2026-06-21T23:05:52.9770739Z         },
2026-06-21T23:05:52.9770964Z         "int": {
2026-06-21T23:05:52.9771111Z           "complete": false,
2026-06-21T23:05:52.9771237Z           "evidence": []
2026-06-21T23:05:52.9771365Z         },
2026-06-21T23:05:52.9771499Z         "unit": {
2026-06-21T23:05:52.9771626Z           "complete": false,
2026-06-21T23:05:52.9771755Z           "evidence": []
2026-06-21T23:05:52.9771881Z         }
2026-06-21T23:05:52.9772013Z       }
2026-06-21T23:05:52.9772133Z     },
2026-06-21T23:05:52.9772261Z     {
2026-06-21T23:05:52.9772407Z       "id": "REQ-INST-10",
2026-06-21T23:05:52.9772672Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T23:05:52.9772820Z       "requiredStages": [
2026-06-21T23:05:52.9772949Z         "impl",
2026-06-21T23:05:52.9773072Z         "unit"
2026-06-21T23:05:52.9773197Z       ],
2026-06-21T23:05:52.9773335Z       "stages": {
2026-06-21T23:05:52.9773465Z         "doc": {
2026-06-21T23:05:52.9773607Z           "complete": false,
2026-06-21T23:05:52.9773745Z           "evidence": []
2026-06-21T23:05:52.9773869Z         },
2026-06-21T23:05:52.9773998Z         "impl": {
2026-06-21T23:05:52.9774132Z           "complete": true,
2026-06-21T23:05:52.9774269Z           "evidence": [
2026-06-21T23:05:52.9774395Z             {
2026-06-21T23:05:52.9774579Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9774709Z               "line": 648
2026-06-21T23:05:52.9774837Z             },
2026-06-21T23:05:52.9774959Z             {
2026-06-21T23:05:52.9775135Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9775281Z               "line": 725
2026-06-21T23:05:52.9775401Z             },
2026-06-21T23:05:52.9775525Z             {
2026-06-21T23:05:52.9775683Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T23:05:52.9775817Z               "line": 13
2026-06-21T23:05:52.9775949Z             },
2026-06-21T23:05:52.9776074Z             {
2026-06-21T23:05:52.9776249Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T23:05:52.9776398Z               "line": 67
2026-06-21T23:05:52.9776521Z             },
2026-06-21T23:05:52.9776652Z             {
2026-06-21T23:05:52.9776813Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:52.9776957Z               "line": 18
2026-06-21T23:05:52.9777094Z             },
2026-06-21T23:05:52.9777213Z             {
2026-06-21T23:05:52.9777385Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:52.9777513Z               "line": 444
2026-06-21T23:05:52.9777648Z             }
2026-06-21T23:05:52.9777780Z           ]
2026-06-21T23:05:52.9777908Z         },
2026-06-21T23:05:52.9778033Z         "int": {
2026-06-21T23:05:52.9778180Z           "complete": false,
2026-06-21T23:05:52.9778324Z           "evidence": []
2026-06-21T23:05:52.9778442Z         },
2026-06-21T23:05:52.9778572Z         "unit": {
2026-06-21T23:05:52.9778719Z           "complete": true,
2026-06-21T23:05:52.9778862Z           "evidence": [
2026-06-21T23:05:52.9779053Z             {
2026-06-21T23:05:52.9779235Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9779382Z               "line": 932
2026-06-21T23:05:52.9779512Z             },
2026-06-21T23:05:52.9779635Z             {
2026-06-21T23:05:52.9779806Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9779944Z               "line": 1309
2026-06-21T23:05:52.9780067Z             },
2026-06-21T23:05:52.9780191Z             {
2026-06-21T23:05:52.9780360Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9780494Z               "line": 1320
2026-06-21T23:05:52.9780628Z             },
2026-06-21T23:05:52.9780751Z             {
2026-06-21T23:05:52.9780929Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9781061Z               "line": 1336
2026-06-21T23:05:52.9781186Z             },
2026-06-21T23:05:52.9781430Z             {
2026-06-21T23:05:52.9781596Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9781821Z               "line": 1352
2026-06-21T23:05:52.9781948Z             },
2026-06-21T23:05:52.9782078Z             {
2026-06-21T23:05:52.9782254Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9782388Z               "line": 1374
2026-06-21T23:05:52.9782511Z             },
2026-06-21T23:05:52.9782630Z             {
2026-06-21T23:05:52.9782789Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9782920Z               "line": 1679
2026-06-21T23:05:52.9783053Z             },
2026-06-21T23:05:52.9783180Z             {
2026-06-21T23:05:52.9783338Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T23:05:52.9783472Z               "line": 130
2026-06-21T23:05:52.9783599Z             },
2026-06-21T23:05:52.9783729Z             {
2026-06-21T23:05:52.9783885Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T23:05:52.9784030Z               "line": 167
2026-06-21T23:05:52.9784158Z             },
2026-06-21T23:05:52.9784282Z             {
2026-06-21T23:05:52.9784443Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T23:05:52.9784582Z               "line": 175
2026-06-21T23:05:52.9784697Z             },
2026-06-21T23:05:52.9784820Z             {
2026-06-21T23:05:52.9784979Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T23:05:52.9785115Z               "line": 183
2026-06-21T23:05:52.9785241Z             },
2026-06-21T23:05:52.9785374Z             {
2026-06-21T23:05:52.9785529Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:52.9785672Z               "line": 896
2026-06-21T23:05:52.9785804Z             }
2026-06-21T23:05:52.9785918Z           ]
2026-06-21T23:05:52.9786052Z         }
2026-06-21T23:05:52.9786180Z       }
2026-06-21T23:05:52.9786310Z     },
2026-06-21T23:05:52.9786433Z     {
2026-06-21T23:05:52.9786578Z       "id": "REQ-INST-11",
2026-06-21T23:05:52.9786849Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T23:05:52.9787006Z       "requiredStages": [
2026-06-21T23:05:52.9787129Z         "impl",
2026-06-21T23:05:52.9787259Z         "unit"
2026-06-21T23:05:52.9787392Z       ],
2026-06-21T23:05:52.9787522Z       "stages": {
2026-06-21T23:05:52.9787658Z         "doc": {
2026-06-21T23:05:52.9787793Z           "complete": false,
2026-06-21T23:05:52.9787935Z           "evidence": []
2026-06-21T23:05:52.9788060Z         },
2026-06-21T23:05:52.9788185Z         "impl": {
2026-06-21T23:05:52.9788321Z           "complete": true,
2026-06-21T23:05:52.9788458Z           "evidence": [
2026-06-21T23:05:52.9788593Z             {
2026-06-21T23:05:52.9788764Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9788903Z               "line": 514
2026-06-21T23:05:52.9789103Z             },
2026-06-21T23:05:52.9789227Z             {
2026-06-21T23:05:52.9789427Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.9789561Z               "line": 297
2026-06-21T23:05:52.9789693Z             },
2026-06-21T23:05:52.9789818Z             {
2026-06-21T23:05:52.9789989Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T23:05:52.9790133Z               "line": 59
2026-06-21T23:05:52.9790261Z             },
2026-06-21T23:05:52.9790386Z             {
2026-06-21T23:05:52.9790542Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9790679Z               "line": 5291
2026-06-21T23:05:52.9790808Z             },
2026-06-21T23:05:52.9790935Z             {
2026-06-21T23:05:52.9791098Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9791230Z               "line": 7137
2026-06-21T23:05:52.9791355Z             }
2026-06-21T23:05:52.9791479Z           ]
2026-06-21T23:05:52.9791597Z         },
2026-06-21T23:05:52.9791732Z         "int": {
2026-06-21T23:05:52.9791865Z           "complete": false,
2026-06-21T23:05:52.9792113Z           "evidence": []
2026-06-21T23:05:52.9792236Z         },
2026-06-21T23:05:52.9792366Z         "unit": {
2026-06-21T23:05:52.9792604Z           "complete": true,
2026-06-21T23:05:52.9792747Z           "evidence": [
2026-06-21T23:05:52.9792875Z             {
2026-06-21T23:05:52.9793048Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9793195Z               "line": 1479
2026-06-21T23:05:52.9793320Z             },
2026-06-21T23:05:52.9793442Z             {
2026-06-21T23:05:52.9793604Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9793745Z               "line": 1512
2026-06-21T23:05:52.9793878Z             },
2026-06-21T23:05:52.9793998Z             {
2026-06-21T23:05:52.9794179Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.9794322Z               "line": 527
2026-06-21T23:05:52.9794445Z             },
2026-06-21T23:05:52.9794566Z             {
2026-06-21T23:05:52.9794737Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T23:05:52.9794885Z               "line": 160
2026-06-21T23:05:52.9795013Z             },
2026-06-21T23:05:52.9795142Z             {
2026-06-21T23:05:52.9795295Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T23:05:52.9795428Z               "line": 190
2026-06-21T23:05:52.9795544Z             },
2026-06-21T23:05:52.9795675Z             {
2026-06-21T23:05:52.9795839Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T23:05:52.9795976Z               "line": 225
2026-06-21T23:05:52.9796108Z             },
2026-06-21T23:05:52.9796233Z             {
2026-06-21T23:05:52.9796402Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9796536Z               "line": 7994
2026-06-21T23:05:52.9796674Z             }
2026-06-21T23:05:52.9796803Z           ]
2026-06-21T23:05:52.9796928Z         }
2026-06-21T23:05:52.9797060Z       }
2026-06-21T23:05:52.9797180Z     },
2026-06-21T23:05:52.9797298Z     {
2026-06-21T23:05:52.9797443Z       "id": "REQ-INST-12",
2026-06-21T23:05:52.9797791Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T23:05:52.9797947Z       "requiredStages": [
2026-06-21T23:05:52.9798072Z         "impl",
2026-06-21T23:05:52.9798209Z         "unit"
2026-06-21T23:05:52.9798333Z       ],
2026-06-21T23:05:52.9798458Z       "stages": {
2026-06-21T23:05:52.9798586Z         "doc": {
2026-06-21T23:05:52.9798726Z           "complete": false,
2026-06-21T23:05:52.9798862Z           "evidence": []
2026-06-21T23:05:52.9799072Z         },
2026-06-21T23:05:52.9799200Z         "impl": {
2026-06-21T23:05:52.9799334Z           "complete": true,
2026-06-21T23:05:52.9799487Z           "evidence": [
2026-06-21T23:05:52.9799614Z             {
2026-06-21T23:05:52.9799802Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9799934Z               "line": 566
2026-06-21T23:05:52.9800054Z             },
2026-06-21T23:05:52.9800187Z             {
2026-06-21T23:05:52.9800355Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9800497Z               "line": 659
2026-06-21T23:05:52.9800612Z             },
2026-06-21T23:05:52.9800745Z             {
2026-06-21T23:05:52.9800917Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9801046Z               "line": 739
2026-06-21T23:05:52.9801183Z             },
2026-06-21T23:05:52.9801307Z             {
2026-06-21T23:05:52.9801476Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9801605Z               "line": 96
2026-06-21T23:05:52.9801738Z             },
2026-06-21T23:05:52.9801857Z             {
2026-06-21T23:05:52.9802011Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9802152Z               "line": 269
2026-06-21T23:05:52.9802283Z             },
2026-06-21T23:05:52.9802406Z             {
2026-06-21T23:05:52.9802583Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:05:52.9802830Z               "line": 148
2026-06-21T23:05:52.9802955Z             }
2026-06-21T23:05:52.9803074Z           ]
2026-06-21T23:05:52.9803298Z         },
2026-06-21T23:05:52.9803421Z         "int": {
2026-06-21T23:05:52.9803565Z           "complete": false,
2026-06-21T23:05:52.9803688Z           "evidence": []
2026-06-21T23:05:52.9803813Z         },
2026-06-21T23:05:52.9803946Z         "unit": {
2026-06-21T23:05:52.9804093Z           "complete": true,
2026-06-21T23:05:52.9804226Z           "evidence": [
2026-06-21T23:05:52.9804348Z             {
2026-06-21T23:05:52.9804520Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9804663Z               "line": 1554
2026-06-21T23:05:52.9804787Z             },
2026-06-21T23:05:52.9804911Z             {
2026-06-21T23:05:52.9805082Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9805221Z               "line": 1577
2026-06-21T23:05:52.9805344Z             },
2026-06-21T23:05:52.9805469Z             {
2026-06-21T23:05:52.9805645Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9805775Z               "line": 1614
2026-06-21T23:05:52.9805911Z             },
2026-06-21T23:05:52.9806041Z             {
2026-06-21T23:05:52.9806212Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:52.9806342Z               "line": 457
2026-06-21T23:05:52.9806476Z             },
2026-06-21T23:05:52.9806607Z             {
2026-06-21T23:05:52.9806779Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:05:52.9806919Z               "line": 185
2026-06-21T23:05:52.9807048Z             },
2026-06-21T23:05:52.9807173Z             {
2026-06-21T23:05:52.9807339Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:05:52.9807473Z               "line": 206
2026-06-21T23:05:52.9807606Z             },
2026-06-21T23:05:52.9807731Z             {
2026-06-21T23:05:52.9807901Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:05:52.9808036Z               "line": 232
2026-06-21T23:05:52.9808169Z             }
2026-06-21T23:05:52.9808293Z           ]
2026-06-21T23:05:52.9808431Z         }
2026-06-21T23:05:52.9808560Z       }
2026-06-21T23:05:52.9808685Z     },
2026-06-21T23:05:52.9808808Z     {
2026-06-21T23:05:52.9809010Z       "id": "REQ-INST-13",
2026-06-21T23:05:52.9809257Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T23:05:52.9809399Z       "requiredStages": [
2026-06-21T23:05:52.9809535Z         "impl",
2026-06-21T23:05:52.9809666Z         "unit"
2026-06-21T23:05:52.9809789Z       ],
2026-06-21T23:05:52.9809913Z       "stages": {
2026-06-21T23:05:52.9810038Z         "doc": {
2026-06-21T23:05:52.9810184Z           "complete": false,
2026-06-21T23:05:52.9810314Z           "evidence": []
2026-06-21T23:05:52.9810447Z         },
2026-06-21T23:05:52.9810572Z         "impl": {
2026-06-21T23:05:52.9810709Z           "complete": true,
2026-06-21T23:05:52.9810838Z           "evidence": [
2026-06-21T23:05:52.9810972Z             {
2026-06-21T23:05:52.9811143Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:52.9811287Z               "line": 100
2026-06-21T23:05:52.9811415Z             },
2026-06-21T23:05:52.9811541Z             {
2026-06-21T23:05:52.9811715Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:05:52.9811838Z               "line": 171
2026-06-21T23:05:52.9811956Z             }
2026-06-21T23:05:52.9812083Z           ]
2026-06-21T23:05:52.9812208Z         },
2026-06-21T23:05:52.9812342Z         "int": {
2026-06-21T23:05:52.9812490Z           "complete": false,
2026-06-21T23:05:52.9812623Z           "evidence": []
2026-06-21T23:05:52.9812751Z         },
2026-06-21T23:05:52.9812881Z         "unit": {
2026-06-21T23:05:52.9813023Z           "complete": true,
2026-06-21T23:05:52.9813153Z           "evidence": [
2026-06-21T23:05:52.9813285Z             {
2026-06-21T23:05:52.9813454Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:05:52.9813720Z               "line": 261
2026-06-21T23:05:52.9813848Z             },
2026-06-21T23:05:52.9814074Z             {
2026-06-21T23:05:52.9814248Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:05:52.9814388Z               "line": 279
2026-06-21T23:05:52.9814520Z             }
2026-06-21T23:05:52.9814648Z           ]
2026-06-21T23:05:52.9814772Z         }
2026-06-21T23:05:52.9814899Z       }
2026-06-21T23:05:52.9815018Z     },
2026-06-21T23:05:52.9815152Z     {
2026-06-21T23:05:52.9815279Z       "id": "REQ-INST-14",
2026-06-21T23:05:52.9815710Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T23:05:52.9815852Z       "requiredStages": [
2026-06-21T23:05:52.9815981Z         "doc",
2026-06-21T23:05:52.9816110Z         "impl",
2026-06-21T23:05:52.9816233Z         "unit"
2026-06-21T23:05:52.9816363Z       ],
2026-06-21T23:05:52.9816491Z       "stages": {
2026-06-21T23:05:52.9816636Z         "doc": {
2026-06-21T23:05:52.9816782Z           "complete": true,
2026-06-21T23:05:52.9816921Z           "evidence": [
2026-06-21T23:05:52.9817055Z             {
2026-06-21T23:05:52.9817196Z               "path": "CONTEXT.md",
2026-06-21T23:05:52.9817334Z               "line": 588
2026-06-21T23:05:52.9817465Z             },
2026-06-21T23:05:52.9817599Z             {
2026-06-21T23:05:52.9817747Z               "path": "docs/STORAGE.md",
2026-06-21T23:05:52.9817880Z               "line": 49
2026-06-21T23:05:52.9818009Z             }
2026-06-21T23:05:52.9818137Z           ]
2026-06-21T23:05:52.9818267Z         },
2026-06-21T23:05:52.9818396Z         "impl": {
2026-06-21T23:05:52.9818534Z           "complete": true,
2026-06-21T23:05:52.9818671Z           "evidence": [
2026-06-21T23:05:52.9818800Z             {
2026-06-21T23:05:52.9819058Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9819197Z               "line": 410
2026-06-21T23:05:52.9819338Z             },
2026-06-21T23:05:52.9819478Z             {
2026-06-21T23:05:52.9819658Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9819808Z               "line": 367
2026-06-21T23:05:52.9819922Z             },
2026-06-21T23:05:52.9820054Z             {
2026-06-21T23:05:52.9820216Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9820353Z               "line": 293
2026-06-21T23:05:52.9820478Z             },
2026-06-21T23:05:52.9820608Z             {
2026-06-21T23:05:52.9820774Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9820912Z               "line": 1577
2026-06-21T23:05:52.9821040Z             }
2026-06-21T23:05:52.9821151Z           ]
2026-06-21T23:05:52.9821279Z         },
2026-06-21T23:05:52.9821408Z         "int": {
2026-06-21T23:05:52.9821550Z           "complete": false,
2026-06-21T23:05:52.9821689Z           "evidence": []
2026-06-21T23:05:52.9821819Z         },
2026-06-21T23:05:52.9821951Z         "unit": {
2026-06-21T23:05:52.9822101Z           "complete": true,
2026-06-21T23:05:52.9822232Z           "evidence": [
2026-06-21T23:05:52.9822365Z             {
2026-06-21T23:05:52.9822544Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9822677Z               "line": 1163
2026-06-21T23:05:52.9822807Z             },
2026-06-21T23:05:52.9822930Z             {
2026-06-21T23:05:52.9823107Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9823245Z               "line": 944
2026-06-21T23:05:52.9823375Z             },
2026-06-21T23:05:52.9823502Z             {
2026-06-21T23:05:52.9823675Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9823808Z               "line": 1205
2026-06-21T23:05:52.9823936Z             },
2026-06-21T23:05:52.9824065Z             {
2026-06-21T23:05:52.9824237Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9824371Z               "line": 659
2026-06-21T23:05:52.9824499Z             },
2026-06-21T23:05:52.9824737Z             {
2026-06-21T23:05:52.9824895Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9825118Z               "line": 8070
2026-06-21T23:05:52.9825246Z             }
2026-06-21T23:05:52.9825374Z           ]
2026-06-21T23:05:52.9825506Z         }
2026-06-21T23:05:52.9825631Z       }
2026-06-21T23:05:52.9825754Z     },
2026-06-21T23:05:52.9825878Z     {
2026-06-21T23:05:52.9826022Z       "id": "REQ-INST-15",
2026-06-21T23:05:52.9826779Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T23:05:52.9826919Z       "requiredStages": [
2026-06-21T23:05:52.9827051Z         "doc",
2026-06-21T23:05:52.9827181Z         "impl",
2026-06-21T23:05:52.9827309Z         "unit"
2026-06-21T23:05:52.9827433Z       ],
2026-06-21T23:05:52.9827572Z       "stages": {
2026-06-21T23:05:52.9827703Z         "doc": {
2026-06-21T23:05:52.9827852Z           "complete": true,
2026-06-21T23:05:52.9827992Z           "evidence": [
2026-06-21T23:05:52.9828120Z             {
2026-06-21T23:05:52.9828345Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T23:05:52.9828479Z               "line": 3
2026-06-21T23:05:52.9828598Z             }
2026-06-21T23:05:52.9828726Z           ]
2026-06-21T23:05:52.9828860Z         },
2026-06-21T23:05:52.9829055Z         "impl": {
2026-06-21T23:05:52.9829185Z           "complete": true,
2026-06-21T23:05:52.9829322Z           "evidence": [
2026-06-21T23:05:52.9829443Z             {
2026-06-21T23:05:52.9829623Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9829767Z               "line": 353
2026-06-21T23:05:52.9829880Z             },
2026-06-21T23:05:52.9830009Z             {
2026-06-21T23:05:52.9830162Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:05:52.9830304Z               "line": 60
2026-06-21T23:05:52.9830430Z             },
2026-06-21T23:05:52.9830566Z             {
2026-06-21T23:05:52.9830752Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.9830881Z               "line": 368
2026-06-21T23:05:52.9831014Z             },
2026-06-21T23:05:52.9831143Z             {
2026-06-21T23:05:52.9831329Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.9831458Z               "line": 417
2026-06-21T23:05:52.9831591Z             },
2026-06-21T23:05:52.9831716Z             {
2026-06-21T23:05:52.9831877Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:05:52.9832012Z               "line": 19
2026-06-21T23:05:52.9832139Z             },
2026-06-21T23:05:52.9832273Z             {
2026-06-21T23:05:52.9832435Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:05:52.9832569Z               "line": 70
2026-06-21T23:05:52.9832703Z             },
2026-06-21T23:05:52.9832830Z             {
2026-06-21T23:05:52.9832992Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:05:52.9833128Z               "line": 96
2026-06-21T23:05:52.9833257Z             },
2026-06-21T23:05:52.9833387Z             {
2026-06-21T23:05:52.9833557Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:05:52.9833691Z               "line": 121
2026-06-21T23:05:52.9833819Z             },
2026-06-21T23:05:52.9833954Z             {
2026-06-21T23:05:52.9834105Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:05:52.9834245Z               "line": 172
2026-06-21T23:05:52.9834363Z             },
2026-06-21T23:05:52.9834491Z             {
2026-06-21T23:05:52.9834663Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.9834802Z               "line": 178
2026-06-21T23:05:52.9834927Z             },
2026-06-21T23:05:52.9835049Z             {
2026-06-21T23:05:52.9835208Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9835455Z               "line": 1469
2026-06-21T23:05:52.9835594Z             }
2026-06-21T23:05:52.9835721Z           ]
2026-06-21T23:05:52.9835943Z         },
2026-06-21T23:05:52.9836085Z         "int": {
2026-06-21T23:05:52.9836225Z           "complete": false,
2026-06-21T23:05:52.9836367Z           "evidence": []
2026-06-21T23:05:52.9836497Z         },
2026-06-21T23:05:52.9836625Z         "unit": {
2026-06-21T23:05:52.9836768Z           "complete": true,
2026-06-21T23:05:52.9836901Z           "evidence": [
2026-06-21T23:05:52.9837030Z             {
2026-06-21T23:05:52.9837206Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.9837349Z               "line": 577
2026-06-21T23:05:52.9837470Z             },
2026-06-21T23:05:52.9837597Z             {
2026-06-21T23:05:52.9837775Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:52.9837912Z               "line": 638
2026-06-21T23:05:52.9838037Z             },
2026-06-21T23:05:52.9838170Z             {
2026-06-21T23:05:52.9838340Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:05:52.9838473Z               "line": 213
2026-06-21T23:05:52.9838600Z             },
2026-06-21T23:05:52.9838729Z             {
2026-06-21T23:05:52.9838881Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:05:52.9839087Z               "line": 249
2026-06-21T23:05:52.9839215Z             },
2026-06-21T23:05:52.9839344Z             {
2026-06-21T23:05:52.9839511Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:05:52.9839644Z               "line": 262
2026-06-21T23:05:52.9839769Z             },
2026-06-21T23:05:52.9839892Z             {
2026-06-21T23:05:52.9840046Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:05:52.9840188Z               "line": 338
2026-06-21T23:05:52.9840318Z             },
2026-06-21T23:05:52.9840445Z             {
2026-06-21T23:05:52.9840613Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:52.9840755Z               "line": 690
2026-06-21T23:05:52.9840869Z             },
2026-06-21T23:05:52.9841004Z             {
2026-06-21T23:05:52.9841159Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9841302Z               "line": 8007
2026-06-21T23:05:52.9841432Z             },
2026-06-21T23:05:52.9841559Z             {
2026-06-21T23:05:52.9841713Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9841841Z               "line": 9837
2026-06-21T23:05:52.9841976Z             }
2026-06-21T23:05:52.9842099Z           ]
2026-06-21T23:05:52.9842223Z         }
2026-06-21T23:05:52.9842356Z       }
2026-06-21T23:05:52.9842480Z     },
2026-06-21T23:05:52.9842601Z     {
2026-06-21T23:05:52.9842734Z       "id": "REQ-INST-2",
2026-06-21T23:05:52.9842915Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T23:05:52.9843052Z       "requiredStages": [
2026-06-21T23:05:52.9843187Z         "impl",
2026-06-21T23:05:52.9843319Z         "unit"
2026-06-21T23:05:52.9843447Z       ],
2026-06-21T23:05:52.9843581Z       "stages": {
2026-06-21T23:05:52.9843712Z         "doc": {
2026-06-21T23:05:52.9843860Z           "complete": false,
2026-06-21T23:05:52.9843998Z           "evidence": []
2026-06-21T23:05:52.9844127Z         },
2026-06-21T23:05:52.9844260Z         "impl": {
2026-06-21T23:05:52.9844398Z           "complete": true,
2026-06-21T23:05:52.9844524Z           "evidence": [
2026-06-21T23:05:52.9844651Z             {
2026-06-21T23:05:52.9844829Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9844971Z               "line": 108
2026-06-21T23:05:52.9845095Z             },
2026-06-21T23:05:52.9845228Z             {
2026-06-21T23:05:52.9845410Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:05:52.9845547Z               "line": 28
2026-06-21T23:05:52.9845676Z             },
2026-06-21T23:05:52.9845806Z             {
2026-06-21T23:05:52.9845972Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:05:52.9846107Z               "line": 74
2026-06-21T23:05:52.9846347Z             },
2026-06-21T23:05:52.9846476Z             {
2026-06-21T23:05:52.9846645Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:05:52.9846879Z               "line": 96
2026-06-21T23:05:52.9847008Z             },
2026-06-21T23:05:52.9847132Z             {
2026-06-21T23:05:52.9847303Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:05:52.9847442Z               "line": 86
2026-06-21T23:05:52.9847570Z             },
2026-06-21T23:05:52.9847701Z             {
2026-06-21T23:05:52.9847857Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:05:52.9847996Z               "line": 118
2026-06-21T23:05:52.9848114Z             }
2026-06-21T23:05:52.9848243Z           ]
2026-06-21T23:05:52.9848373Z         },
2026-06-21T23:05:52.9848505Z         "int": {
2026-06-21T23:05:52.9848650Z           "complete": false,
2026-06-21T23:05:52.9848781Z           "evidence": []
2026-06-21T23:05:52.9848914Z         },
2026-06-21T23:05:52.9849112Z         "unit": {
2026-06-21T23:05:52.9849251Z           "complete": true,
2026-06-21T23:05:52.9849399Z           "evidence": [
2026-06-21T23:05:52.9849522Z             {
2026-06-21T23:05:52.9849676Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:05:52.9849808Z               "line": 250
2026-06-21T23:05:52.9849943Z             },
2026-06-21T23:05:52.9850061Z             {
2026-06-21T23:05:52.9850234Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:05:52.9850362Z               "line": 280
2026-06-21T23:05:52.9850490Z             }
2026-06-21T23:05:52.9850615Z           ]
2026-06-21T23:05:52.9850743Z         }
2026-06-21T23:05:52.9850868Z       }
2026-06-21T23:05:52.9850991Z     },
2026-06-21T23:05:52.9851119Z     {
2026-06-21T23:05:52.9851254Z       "id": "REQ-INST-3",
2026-06-21T23:05:52.9851454Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T23:05:52.9851602Z       "requiredStages": [
2026-06-21T23:05:52.9851729Z         "doc",
2026-06-21T23:05:52.9851872Z         "impl",
2026-06-21T23:05:52.9851996Z         "unit"
2026-06-21T23:05:52.9852125Z       ],
2026-06-21T23:05:52.9852259Z       "stages": {
2026-06-21T23:05:52.9852386Z         "doc": {
2026-06-21T23:05:52.9852521Z           "complete": true,
2026-06-21T23:05:52.9852659Z           "evidence": [
2026-06-21T23:05:52.9852788Z             {
2026-06-21T23:05:52.9852945Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T23:05:52.9853074Z               "line": 3
2026-06-21T23:05:52.9853208Z             }
2026-06-21T23:05:52.9853331Z           ]
2026-06-21T23:05:52.9853466Z         },
2026-06-21T23:05:52.9853593Z         "impl": {
2026-06-21T23:05:52.9853737Z           "complete": true,
2026-06-21T23:05:52.9853875Z           "evidence": [
2026-06-21T23:05:52.9854012Z             {
2026-06-21T23:05:52.9854387Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:52.9854725Z               "line": 60
2026-06-21T23:05:52.9855036Z             },
2026-06-21T23:05:52.9855302Z             {
2026-06-21T23:05:52.9855607Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:52.9855950Z               "line": 480
2026-06-21T23:05:52.9856231Z             },
2026-06-21T23:05:52.9856484Z             {
2026-06-21T23:05:52.9856794Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9857134Z               "line": 254
2026-06-21T23:05:52.9857398Z             },
2026-06-21T23:05:52.9857646Z             {
2026-06-21T23:05:52.9865099Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9865528Z               "line": 384
2026-06-21T23:05:52.9865852Z             },
2026-06-21T23:05:52.9866106Z             {
2026-06-21T23:05:52.9866406Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9866749Z               "line": 418
2026-06-21T23:05:52.9867011Z             },
2026-06-21T23:05:52.9867251Z             {
2026-06-21T23:05:52.9867549Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T23:05:52.9868071Z               "line": 74
2026-06-21T23:05:52.9868333Z             },
2026-06-21T23:05:52.9868681Z             {
2026-06-21T23:05:52.9869068Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9869412Z               "line": 234
2026-06-21T23:05:52.9869688Z             },
2026-06-21T23:05:52.9869930Z             {
2026-06-21T23:05:52.9870266Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9870604Z               "line": 396
2026-06-21T23:05:52.9870900Z             },
2026-06-21T23:05:52.9871134Z             {
2026-06-21T23:05:52.9871425Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9871754Z               "line": 45
2026-06-21T23:05:52.9872012Z             },
2026-06-21T23:05:52.9872259Z             {
2026-06-21T23:05:52.9872531Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9872859Z               "line": 114
2026-06-21T23:05:52.9873126Z             },
2026-06-21T23:05:52.9873370Z             {
2026-06-21T23:05:52.9873646Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9874023Z               "line": 152
2026-06-21T23:05:52.9874285Z             },
2026-06-21T23:05:52.9874538Z             {
2026-06-21T23:05:52.9874838Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9875165Z               "line": 168
2026-06-21T23:05:52.9875425Z             },
2026-06-21T23:05:52.9875674Z             {
2026-06-21T23:05:52.9875955Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9876284Z               "line": 178
2026-06-21T23:05:52.9876547Z             },
2026-06-21T23:05:52.9876795Z             {
2026-06-21T23:05:52.9877076Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9877410Z               "line": 210
2026-06-21T23:05:52.9877676Z             },
2026-06-21T23:05:52.9877910Z             {
2026-06-21T23:05:52.9878194Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9878523Z               "line": 287
2026-06-21T23:05:52.9878790Z             },
2026-06-21T23:05:52.9879114Z             {
2026-06-21T23:05:52.9879405Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9879724Z               "line": 311
2026-06-21T23:05:52.9879982Z             },
2026-06-21T23:05:52.9880219Z             {
2026-06-21T23:05:52.9880499Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9880821Z               "line": 389
2026-06-21T23:05:52.9881080Z             },
2026-06-21T23:05:52.9881323Z             {
2026-06-21T23:05:52.9881609Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9881938Z               "line": 438
2026-06-21T23:05:52.9882204Z             },
2026-06-21T23:05:52.9882442Z             {
2026-06-21T23:05:52.9882734Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T23:05:52.9883058Z               "line": 37
2026-06-21T23:05:52.9883334Z             },
2026-06-21T23:05:52.9883567Z             {
2026-06-21T23:05:52.9883853Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9884183Z               "line": 62
2026-06-21T23:05:52.9884459Z             },
2026-06-21T23:05:52.9884701Z             {
2026-06-21T23:05:52.9884969Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9885297Z               "line": 279
2026-06-21T23:05:52.9885564Z             },
2026-06-21T23:05:52.9885807Z             {
2026-06-21T23:05:52.9886081Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9886396Z               "line": 1848
2026-06-21T23:05:52.9886667Z             }
2026-06-21T23:05:52.9886911Z           ]
2026-06-21T23:05:52.9887155Z         },
2026-06-21T23:05:52.9887389Z         "int": {
2026-06-21T23:05:52.9887650Z           "complete": false,
2026-06-21T23:05:52.9887931Z           "evidence": []
2026-06-21T23:05:52.9888199Z         },
2026-06-21T23:05:52.9888437Z         "unit": {
2026-06-21T23:05:52.9888796Z           "complete": true,
2026-06-21T23:05:52.9889139Z           "evidence": [
2026-06-21T23:05:52.9889544Z             {
2026-06-21T23:05:52.9889830Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:05:52.9890159Z               "line": 360
2026-06-21T23:05:52.9890417Z             },
2026-06-21T23:05:52.9890651Z             {
2026-06-21T23:05:52.9890928Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9891265Z               "line": 837
2026-06-21T23:05:52.9891525Z             },
2026-06-21T23:05:52.9891763Z             {
2026-06-21T23:05:52.9892053Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9892387Z               "line": 894
2026-06-21T23:05:52.9892641Z             },
2026-06-21T23:05:52.9892884Z             {
2026-06-21T23:05:52.9893176Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.9893505Z               "line": 889
2026-06-21T23:05:52.9893772Z             },
2026-06-21T23:05:52.9894017Z             {
2026-06-21T23:05:52.9894298Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:52.9894632Z               "line": 1014
2026-06-21T23:05:52.9894899Z             },
2026-06-21T23:05:52.9895143Z             {
2026-06-21T23:05:52.9895439Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9895768Z               "line": 1264
2026-06-21T23:05:52.9896036Z             },
2026-06-21T23:05:52.9896281Z             {
2026-06-21T23:05:52.9896579Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9896918Z               "line": 1405
2026-06-21T23:05:52.9897180Z             },
2026-06-21T23:05:52.9897423Z             {
2026-06-21T23:05:52.9897705Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9898029Z               "line": 449
2026-06-21T23:05:52.9898292Z             },
2026-06-21T23:05:52.9898535Z             {
2026-06-21T23:05:52.9898821Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9899225Z               "line": 485
2026-06-21T23:05:52.9899504Z             },
2026-06-21T23:05:52.9899746Z             {
2026-06-21T23:05:52.9900028Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9900352Z               "line": 540
2026-06-21T23:05:52.9900605Z             },
2026-06-21T23:05:52.9900849Z             {
2026-06-21T23:05:52.9901126Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9901455Z               "line": 697
2026-06-21T23:05:52.9901710Z             },
2026-06-21T23:05:52.9901951Z             {
2026-06-21T23:05:52.9902233Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9902557Z               "line": 931
2026-06-21T23:05:52.9902824Z             },
2026-06-21T23:05:52.9903072Z             {
2026-06-21T23:05:52.9903359Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9903683Z               "line": 945
2026-06-21T23:05:52.9903945Z             },
2026-06-21T23:05:52.9904193Z             {
2026-06-21T23:05:52.9904478Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9904816Z               "line": 1290
2026-06-21T23:05:52.9905089Z             },
2026-06-21T23:05:52.9905337Z             {
2026-06-21T23:05:52.9905603Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:52.9905913Z               "line": 609
2026-06-21T23:05:52.9906175Z             },
2026-06-21T23:05:52.9906418Z             {
2026-06-21T23:05:52.9906689Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9907007Z               "line": 8031
2026-06-21T23:05:52.9907274Z             }
2026-06-21T23:05:52.9907511Z           ]
2026-06-21T23:05:52.9907750Z         }
2026-06-21T23:05:52.9907984Z       }
2026-06-21T23:05:52.9908222Z     },
2026-06-21T23:05:52.9908446Z     {
2026-06-21T23:05:52.9908699Z       "id": "REQ-INST-4",
2026-06-21T23:05:52.9909134Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T23:05:52.9909637Z       "requiredStages": [
2026-06-21T23:05:52.9909902Z         "impl",
2026-06-21T23:05:52.9910255Z         "unit"
2026-06-21T23:05:52.9910508Z       ],
2026-06-21T23:05:52.9910747Z       "stages": {
2026-06-21T23:05:52.9911004Z         "doc": {
2026-06-21T23:05:52.9911275Z           "complete": false,
2026-06-21T23:05:52.9911561Z           "evidence": []
2026-06-21T23:05:52.9911842Z         },
2026-06-21T23:05:52.9912086Z         "impl": {
2026-06-21T23:05:52.9912352Z           "complete": true,
2026-06-21T23:05:52.9912635Z           "evidence": [
2026-06-21T23:05:52.9912907Z             {
2026-06-21T23:05:52.9913192Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9913517Z               "line": 385
2026-06-21T23:05:52.9913803Z             },
2026-06-21T23:05:52.9914056Z             {
2026-06-21T23:05:52.9914347Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9914695Z               "line": 202
2026-06-21T23:05:52.9914968Z             },
2026-06-21T23:05:52.9915214Z             {
2026-06-21T23:05:52.9915510Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9915839Z               "line": 234
2026-06-21T23:05:52.9916110Z             },
2026-06-21T23:05:52.9916367Z             {
2026-06-21T23:05:52.9916659Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9916993Z               "line": 274
2026-06-21T23:05:52.9917245Z             }
2026-06-21T23:05:52.9917487Z           ]
2026-06-21T23:05:52.9917733Z         },
2026-06-21T23:05:52.9917981Z         "int": {
2026-06-21T23:05:52.9918248Z           "complete": false,
2026-06-21T23:05:52.9918535Z           "evidence": []
2026-06-21T23:05:52.9918797Z         },
2026-06-21T23:05:52.9919135Z         "unit": {
2026-06-21T23:05:52.9919413Z           "complete": true,
2026-06-21T23:05:52.9919704Z           "evidence": [
2026-06-21T23:05:52.9919966Z             {
2026-06-21T23:05:52.9920268Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:52.9920605Z               "line": 889
2026-06-21T23:05:52.9920872Z             },
2026-06-21T23:05:52.9921124Z             {
2026-06-21T23:05:52.9921416Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9921740Z               "line": 561
2026-06-21T23:05:52.9922007Z             },
2026-06-21T23:05:52.9922261Z             {
2026-06-21T23:05:52.9922551Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9922883Z               "line": 668
2026-06-21T23:05:52.9923152Z             },
2026-06-21T23:05:52.9923405Z             {
2026-06-21T23:05:52.9923701Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9924034Z               "line": 750
2026-06-21T23:05:52.9924316Z             }
2026-06-21T23:05:52.9924559Z           ]
2026-06-21T23:05:52.9924799Z         }
2026-06-21T23:05:52.9925036Z       }
2026-06-21T23:05:52.9925274Z     },
2026-06-21T23:05:52.9925523Z     {
2026-06-21T23:05:52.9925775Z       "id": "REQ-INST-5",
2026-06-21T23:05:52.9926142Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T23:05:52.9926547Z       "requiredStages": [
2026-06-21T23:05:52.9926866Z         "impl",
2026-06-21T23:05:52.9927124Z         "unit",
2026-06-21T23:05:52.9927373Z         "int"
2026-06-21T23:05:52.9927625Z       ],
2026-06-21T23:05:52.9927866Z       "stages": {
2026-06-21T23:05:52.9928127Z         "doc": {
2026-06-21T23:05:52.9928394Z           "complete": false,
2026-06-21T23:05:52.9928685Z           "evidence": []
2026-06-21T23:05:52.9929028Z         },
2026-06-21T23:05:52.9929286Z         "impl": {
2026-06-21T23:05:52.9929552Z           "complete": true,
2026-06-21T23:05:52.9929833Z           "evidence": [
2026-06-21T23:05:52.9930091Z             {
2026-06-21T23:05:52.9930381Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T23:05:52.9930719Z               "line": 85
2026-06-21T23:05:52.9930990Z             },
2026-06-21T23:05:52.9931356Z             {
2026-06-21T23:05:52.9931638Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:52.9932090Z               "line": 68
2026-06-21T23:05:52.9932357Z             },
2026-06-21T23:05:52.9932610Z             {
2026-06-21T23:05:52.9932891Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:52.9933211Z               "line": 99
2026-06-21T23:05:52.9933472Z             },
2026-06-21T23:05:52.9933717Z             {
2026-06-21T23:05:52.9934003Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:52.9934327Z               "line": 183
2026-06-21T23:05:52.9934590Z             },
2026-06-21T23:05:52.9934838Z             {
2026-06-21T23:05:52.9935119Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:52.9935462Z               "line": 314
2026-06-21T23:05:52.9935721Z             }
2026-06-21T23:05:52.9935969Z           ]
2026-06-21T23:05:52.9936215Z         },
2026-06-21T23:05:52.9936463Z         "int": {
2026-06-21T23:05:52.9936735Z           "complete": true,
2026-06-21T23:05:52.9937007Z           "evidence": [
2026-06-21T23:05:52.9937274Z             {
2026-06-21T23:05:52.9937574Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:52.9937909Z               "line": 156
2026-06-21T23:05:52.9938185Z             },
2026-06-21T23:05:52.9938426Z             {
2026-06-21T23:05:52.9938734Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T23:05:52.9939134Z               "line": 145
2026-06-21T23:05:52.9939406Z             },
2026-06-21T23:05:52.9939650Z             {
2026-06-21T23:05:52.9939936Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:52.9940274Z               "line": 707
2026-06-21T23:05:52.9940542Z             },
2026-06-21T23:05:52.9940786Z             {
2026-06-21T23:05:52.9941081Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:52.9941432Z               "line": 1069
2026-06-21T23:05:52.9941706Z             }
2026-06-21T23:05:52.9941953Z           ]
2026-06-21T23:05:52.9942203Z         },
2026-06-21T23:05:52.9942461Z         "unit": {
2026-06-21T23:05:52.9942732Z           "complete": true,
2026-06-21T23:05:52.9943018Z           "evidence": [
2026-06-21T23:05:52.9943275Z             {
2026-06-21T23:05:52.9943561Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:52.9943889Z               "line": 552
2026-06-21T23:05:52.9944154Z             },
2026-06-21T23:05:52.9944412Z             {
2026-06-21T23:05:52.9944684Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:52.9945008Z               "line": 595
2026-06-21T23:05:52.9945265Z             },
2026-06-21T23:05:52.9945508Z             {
2026-06-21T23:05:52.9945794Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T23:05:52.9946132Z               "line": 219
2026-06-21T23:05:52.9946399Z             }
2026-06-21T23:05:52.9946648Z           ]
2026-06-21T23:05:52.9946880Z         }
2026-06-21T23:05:52.9947127Z       }
2026-06-21T23:05:52.9947366Z     },
2026-06-21T23:05:52.9947610Z     {
2026-06-21T23:05:52.9947873Z       "id": "REQ-INST-6",
2026-06-21T23:05:52.9948258Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T23:05:52.9948658Z       "requiredStages": [
2026-06-21T23:05:52.9949025Z         "impl",
2026-06-21T23:05:52.9949285Z         "unit",
2026-06-21T23:05:52.9949538Z         "int"
2026-06-21T23:05:52.9949776Z       ],
2026-06-21T23:05:52.9950018Z       "stages": {
2026-06-21T23:05:52.9950276Z         "doc": {
2026-06-21T23:05:52.9950544Z           "complete": true,
2026-06-21T23:05:52.9950839Z           "evidence": [
2026-06-21T23:05:52.9951098Z             {
2026-06-21T23:05:52.9951374Z               "path": "docs/DEFERRED.md",
2026-06-21T23:05:52.9951689Z               "line": 13
2026-06-21T23:05:52.9951958Z             }
2026-06-21T23:05:52.9952208Z           ]
2026-06-21T23:05:52.9952453Z         },
2026-06-21T23:05:52.9952701Z         "impl": {
2026-06-21T23:05:52.9953082Z           "complete": true,
2026-06-21T23:05:52.9953373Z           "evidence": [
2026-06-21T23:05:52.9953720Z             {
2026-06-21T23:05:52.9954022Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:52.9954355Z               "line": 391
2026-06-21T23:05:52.9954621Z             },
2026-06-21T23:05:52.9954871Z             {
2026-06-21T23:05:52.9955157Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T23:05:52.9955491Z               "line": 27
2026-06-21T23:05:52.9955758Z             },
2026-06-21T23:05:52.9955997Z             {
2026-06-21T23:05:52.9956287Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T23:05:52.9960789Z               "line": 73
2026-06-21T23:05:52.9961137Z             },
2026-06-21T23:05:52.9961399Z             {
2026-06-21T23:05:52.9961704Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T23:05:52.9962062Z               "line": 182
2026-06-21T23:05:52.9962344Z             },
2026-06-21T23:05:52.9962600Z             {
2026-06-21T23:05:52.9962898Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9963237Z               "line": 426
2026-06-21T23:05:52.9963514Z             },
2026-06-21T23:05:52.9963760Z             {
2026-06-21T23:05:52.9964047Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T23:05:52.9964385Z               "line": 31
2026-06-21T23:05:52.9964657Z             },
2026-06-21T23:05:52.9964906Z             {
2026-06-21T23:05:52.9965190Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:52.9965522Z               "line": 202
2026-06-21T23:05:52.9965795Z             },
2026-06-21T23:05:52.9966046Z             {
2026-06-21T23:05:52.9966322Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.9966642Z               "line": 83
2026-06-21T23:05:52.9966909Z             },
2026-06-21T23:05:52.9967167Z             {
2026-06-21T23:05:52.9967435Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:52.9967750Z               "line": 1849
2026-06-21T23:05:52.9968024Z             },
2026-06-21T23:05:52.9968276Z             {
2026-06-21T23:05:52.9968558Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:52.9968873Z               "line": 179
2026-06-21T23:05:52.9969216Z             },
2026-06-21T23:05:52.9969488Z             {
2026-06-21T23:05:52.9969769Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:52.9970093Z               "line": 215
2026-06-21T23:05:52.9970358Z             }
2026-06-21T23:05:52.9970596Z           ]
2026-06-21T23:05:52.9970834Z         },
2026-06-21T23:05:52.9971082Z         "int": {
2026-06-21T23:05:52.9971354Z           "complete": true,
2026-06-21T23:05:52.9971645Z           "evidence": [
2026-06-21T23:05:52.9971917Z             {
2026-06-21T23:05:52.9972213Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:52.9972565Z               "line": 721
2026-06-21T23:05:52.9972838Z             },
2026-06-21T23:05:52.9973098Z             {
2026-06-21T23:05:52.9973406Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:52.9973749Z               "line": 1114
2026-06-21T23:05:52.9974010Z             },
2026-06-21T23:05:52.9974264Z             {
2026-06-21T23:05:52.9974545Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:52.9974869Z               "line": 726
2026-06-21T23:05:52.9975137Z             }
2026-06-21T23:05:52.9975386Z           ]
2026-06-21T23:05:52.9975636Z         },
2026-06-21T23:05:52.9975877Z         "unit": {
2026-06-21T23:05:52.9976145Z           "complete": true,
2026-06-21T23:05:52.9976425Z           "evidence": [
2026-06-21T23:05:52.9976702Z             {
2026-06-21T23:05:52.9976984Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:52.9977313Z               "line": 661
2026-06-21T23:05:52.9977590Z             },
2026-06-21T23:05:52.9977841Z             {
2026-06-21T23:05:52.9978123Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:52.9978623Z               "line": 899
2026-06-21T23:05:52.9978890Z             },
2026-06-21T23:05:52.9979324Z             {
2026-06-21T23:05:52.9979614Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T23:05:52.9979943Z               "line": 66
2026-06-21T23:05:52.9980212Z             },
2026-06-21T23:05:52.9980454Z             {
2026-06-21T23:05:52.9980733Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:52.9981060Z               "line": 297
2026-06-21T23:05:52.9981322Z             },
2026-06-21T23:05:52.9981571Z             {
2026-06-21T23:05:52.9981852Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:52.9982176Z               "line": 203
2026-06-21T23:05:52.9982444Z             }
2026-06-21T23:05:52.9982692Z           ]
2026-06-21T23:05:52.9982939Z         }
2026-06-21T23:05:52.9983187Z       }
2026-06-21T23:05:52.9983417Z     },
2026-06-21T23:05:52.9983667Z     {
2026-06-21T23:05:52.9983927Z       "id": "REQ-INST-7",
2026-06-21T23:05:52.9984261Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T23:05:52.9984614Z       "requiredStages": [
2026-06-21T23:05:52.9984895Z         "impl",
2026-06-21T23:05:52.9985148Z         "unit",
2026-06-21T23:05:52.9985396Z         "int"
2026-06-21T23:05:52.9985640Z       ],
2026-06-21T23:05:52.9985888Z       "stages": {
2026-06-21T23:05:52.9986148Z         "doc": {
2026-06-21T23:05:52.9986423Z           "complete": false,
2026-06-21T23:05:52.9986700Z           "evidence": []
2026-06-21T23:05:52.9986963Z         },
2026-06-21T23:05:52.9987211Z         "impl": {
2026-06-21T23:05:52.9987482Z           "complete": true,
2026-06-21T23:05:52.9987757Z           "evidence": [
2026-06-21T23:05:52.9988016Z             {
2026-06-21T23:05:52.9988306Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:52.9988649Z               "line": 436
2026-06-21T23:05:52.9988917Z             },
2026-06-21T23:05:52.9989232Z             {
2026-06-21T23:05:52.9989531Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9989879Z               "line": 27
2026-06-21T23:05:52.9990151Z             },
2026-06-21T23:05:52.9990390Z             {
2026-06-21T23:05:52.9990685Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9991024Z               "line": 207
2026-06-21T23:05:52.9991298Z             },
2026-06-21T23:05:52.9991535Z             {
2026-06-21T23:05:52.9991831Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:52.9992169Z               "line": 344
2026-06-21T23:05:52.9992436Z             },
2026-06-21T23:05:52.9992680Z             {
2026-06-21T23:05:52.9992971Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T23:05:52.9993305Z               "line": 59
2026-06-21T23:05:52.9993582Z             },
2026-06-21T23:05:52.9993819Z             {
2026-06-21T23:05:52.9994109Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:52.9994449Z               "line": 41
2026-06-21T23:05:52.9994716Z             },
2026-06-21T23:05:52.9994970Z             {
2026-06-21T23:05:52.9995270Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:05:52.9995604Z               "line": 27
2026-06-21T23:05:52.9995872Z             },
2026-06-21T23:05:52.9996124Z             {
2026-06-21T23:05:52.9996414Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:05:52.9996751Z               "line": 119
2026-06-21T23:05:52.9997021Z             },
2026-06-21T23:05:52.9997255Z             {
2026-06-21T23:05:52.9997537Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:05:52.9997870Z               "line": 134
2026-06-21T23:05:52.9998128Z             },
2026-06-21T23:05:52.9998371Z             {
2026-06-21T23:05:52.9998656Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:05:52.9999063Z               "line": 139
2026-06-21T23:05:52.9999330Z             }
2026-06-21T23:05:52.9999709Z           ]
2026-06-21T23:05:52.9999953Z         },
2026-06-21T23:05:53.0000181Z         "int": {
2026-06-21T23:05:53.0000539Z           "complete": true,
2026-06-21T23:05:53.0000821Z           "evidence": [
2026-06-21T23:05:53.0001083Z             {
2026-06-21T23:05:53.0001374Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T23:05:53.0001703Z               "line": 145
2026-06-21T23:05:53.0001964Z             },
2026-06-21T23:05:53.0002209Z             {
2026-06-21T23:05:53.0002500Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0002838Z               "line": 665
2026-06-21T23:05:53.0003096Z             },
2026-06-21T23:05:53.0003330Z             {
2026-06-21T23:05:53.0003626Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0003954Z               "line": 964
2026-06-21T23:05:53.0004223Z             }
2026-06-21T23:05:53.0004471Z           ]
2026-06-21T23:05:53.0004707Z         },
2026-06-21T23:05:53.0004953Z         "unit": {
2026-06-21T23:05:53.0005230Z           "complete": true,
2026-06-21T23:05:53.0005520Z           "evidence": [
2026-06-21T23:05:53.0005783Z             {
2026-06-21T23:05:53.0006093Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0006442Z               "line": 1134
2026-06-21T23:05:53.0006708Z             },
2026-06-21T23:05:53.0006955Z             {
2026-06-21T23:05:53.0007255Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0007609Z               "line": 1521
2026-06-21T23:05:53.0007877Z             },
2026-06-21T23:05:53.0008121Z             {
2026-06-21T23:05:53.0008426Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T23:05:53.0008554Z               "line": 84
2026-06-21T23:05:53.0008679Z             },
2026-06-21T23:05:53.0008807Z             {
2026-06-21T23:05:53.0009045Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0009188Z               "line": 812
2026-06-21T23:05:53.0009313Z             },
2026-06-21T23:05:53.0009460Z             {
2026-06-21T23:05:53.0009628Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0009770Z               "line": 823
2026-06-21T23:05:53.0009895Z             },
2026-06-21T23:05:53.0010018Z             {
2026-06-21T23:05:53.0010193Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0010323Z               "line": 838
2026-06-21T23:05:53.0010455Z             },
2026-06-21T23:05:53.0010570Z             {
2026-06-21T23:05:53.0010751Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:05:53.0010876Z               "line": 166
2026-06-21T23:05:53.0010999Z             },
2026-06-21T23:05:53.0011127Z             {
2026-06-21T23:05:53.0011295Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:05:53.0011428Z               "line": 181
2026-06-21T23:05:53.0011558Z             },
2026-06-21T23:05:53.0011681Z             {
2026-06-21T23:05:53.0011863Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:05:53.0011991Z               "line": 214
2026-06-21T23:05:53.0012115Z             }
2026-06-21T23:05:53.0012239Z           ]
2026-06-21T23:05:53.0012366Z         }
2026-06-21T23:05:53.0012486Z       }
2026-06-21T23:05:53.0012613Z     },
2026-06-21T23:05:53.0012741Z     {
2026-06-21T23:05:53.0012871Z       "id": "REQ-INST-8",
2026-06-21T23:05:53.0013079Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T23:05:53.0013213Z       "requiredStages": [
2026-06-21T23:05:53.0013346Z         "impl",
2026-06-21T23:05:53.0013476Z         "unit",
2026-06-21T23:05:53.0013609Z         "int"
2026-06-21T23:05:53.0013738Z       ],
2026-06-21T23:05:53.0013862Z       "stages": {
2026-06-21T23:05:53.0013999Z         "doc": {
2026-06-21T23:05:53.0014134Z           "complete": false,
2026-06-21T23:05:53.0014276Z           "evidence": []
2026-06-21T23:05:53.0014401Z         },
2026-06-21T23:05:53.0014533Z         "impl": {
2026-06-21T23:05:53.0014806Z           "complete": true,
2026-06-21T23:05:53.0014934Z           "evidence": [
2026-06-21T23:05:53.0015163Z             {
2026-06-21T23:05:53.0015339Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:53.0015480Z               "line": 202
2026-06-21T23:05:53.0015603Z             },
2026-06-21T23:05:53.0015728Z             {
2026-06-21T23:05:53.0015903Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:53.0016038Z               "line": 525
2026-06-21T23:05:53.0016171Z             },
2026-06-21T23:05:53.0016295Z             {
2026-06-21T23:05:53.0016472Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:53.0016614Z               "line": 565
2026-06-21T23:05:53.0016738Z             },
2026-06-21T23:05:53.0016867Z             {
2026-06-21T23:05:53.0017035Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:05:53.0017176Z               "line": 62
2026-06-21T23:05:53.0017302Z             }
2026-06-21T23:05:53.0017429Z           ]
2026-06-21T23:05:53.0017559Z         },
2026-06-21T23:05:53.0017688Z         "int": {
2026-06-21T23:05:53.0017838Z           "complete": true,
2026-06-21T23:05:53.0017967Z           "evidence": [
2026-06-21T23:05:53.0018098Z             {
2026-06-21T23:05:53.0018266Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:53.0018399Z               "line": 415
2026-06-21T23:05:53.0018528Z             },
2026-06-21T23:05:53.0018661Z             {
2026-06-21T23:05:53.0018832Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0019029Z               "line": 1028
2026-06-21T23:05:53.0019162Z             }
2026-06-21T23:05:53.0019286Z           ]
2026-06-21T23:05:53.0019419Z         },
2026-06-21T23:05:53.0019549Z         "unit": {
2026-06-21T23:05:53.0019691Z           "complete": true,
2026-06-21T23:05:53.0019835Z           "evidence": [
2026-06-21T23:05:53.0019953Z             {
2026-06-21T23:05:53.0020131Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:53.0020272Z               "line": 369
2026-06-21T23:05:53.0020397Z             },
2026-06-21T23:05:53.0020513Z             {
2026-06-21T23:05:53.0020682Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:53.0020816Z               "line": 636
2026-06-21T23:05:53.0020940Z             },
2026-06-21T23:05:53.0021068Z             {
2026-06-21T23:05:53.0021236Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:05:53.0021368Z               "line": 116
2026-06-21T23:05:53.0021493Z             },
2026-06-21T23:05:53.0021626Z             {
2026-06-21T23:05:53.0021794Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:05:53.0021927Z               "line": 160
2026-06-21T23:05:53.0022056Z             }
2026-06-21T23:05:53.0022179Z           ]
2026-06-21T23:05:53.0022308Z         }
2026-06-21T23:05:53.0022428Z       }
2026-06-21T23:05:53.0022560Z     },
2026-06-21T23:05:53.0022685Z     {
2026-06-21T23:05:53.0022819Z       "id": "REQ-INST-9",
2026-06-21T23:05:53.0023056Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T23:05:53.0023201Z       "requiredStages": [
2026-06-21T23:05:53.0023325Z         "impl",
2026-06-21T23:05:53.0023445Z         "unit"
2026-06-21T23:05:53.0023572Z       ],
2026-06-21T23:05:53.0023702Z       "stages": {
2026-06-21T23:05:53.0023826Z         "doc": {
2026-06-21T23:05:53.0023973Z           "complete": false,
2026-06-21T23:05:53.0024103Z           "evidence": []
2026-06-21T23:05:53.0024235Z         },
2026-06-21T23:05:53.0024355Z         "impl": {
2026-06-21T23:05:53.0024493Z           "complete": true,
2026-06-21T23:05:53.0024627Z           "evidence": [
2026-06-21T23:05:53.0024756Z             {
2026-06-21T23:05:53.0024932Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0025065Z               "line": 449
2026-06-21T23:05:53.0025198Z             }
2026-06-21T23:05:53.0025319Z           ]
2026-06-21T23:05:53.0025553Z         },
2026-06-21T23:05:53.0025686Z         "int": {
2026-06-21T23:05:53.0025813Z           "complete": false,
2026-06-21T23:05:53.0026050Z           "evidence": []
2026-06-21T23:05:53.0026177Z         },
2026-06-21T23:05:53.0026317Z         "unit": {
2026-06-21T23:05:53.0026444Z           "complete": true,
2026-06-21T23:05:53.0026584Z           "evidence": [
2026-06-21T23:05:53.0026708Z             {
2026-06-21T23:05:53.0026880Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0027013Z               "line": 1397
2026-06-21T23:05:53.0027136Z             },
2026-06-21T23:05:53.0027261Z             {
2026-06-21T23:05:53.0027436Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0027576Z               "line": 1406
2026-06-21T23:05:53.0027699Z             },
2026-06-21T23:05:53.0027819Z             {
2026-06-21T23:05:53.0027989Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0028124Z               "line": 1422
2026-06-21T23:05:53.0028253Z             },
2026-06-21T23:05:53.0028370Z             {
2026-06-21T23:05:53.0028547Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0028687Z               "line": 1434
2026-06-21T23:05:53.0028816Z             },
2026-06-21T23:05:53.0029011Z             {
2026-06-21T23:05:53.0029175Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0029316Z               "line": 1454
2026-06-21T23:05:53.0029451Z             }
2026-06-21T23:05:53.0029575Z           ]
2026-06-21T23:05:53.0029703Z         }
2026-06-21T23:05:53.0029814Z       }
2026-06-21T23:05:53.0029936Z     },
2026-06-21T23:05:53.0030061Z     {
2026-06-21T23:05:53.0030203Z       "id": "REQ-INSTALL-1",
2026-06-21T23:05:53.0030443Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T23:05:53.0030585Z       "requiredStages": [
2026-06-21T23:05:53.0030715Z         "doc",
2026-06-21T23:05:53.0030842Z         "impl",
2026-06-21T23:05:53.0030972Z         "int"
2026-06-21T23:05:53.0031097Z       ],
2026-06-21T23:05:53.0031233Z       "stages": {
2026-06-21T23:05:53.0031347Z         "doc": {
2026-06-21T23:05:53.0031486Z           "complete": true,
2026-06-21T23:05:53.0031618Z           "evidence": [
2026-06-21T23:05:53.0031743Z             {
2026-06-21T23:05:53.0031885Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0032016Z               "line": 754
2026-06-21T23:05:53.0032148Z             }
2026-06-21T23:05:53.0032267Z           ]
2026-06-21T23:05:53.0032391Z         },
2026-06-21T23:05:53.0032524Z         "impl": {
2026-06-21T23:05:53.0032664Z           "complete": true,
2026-06-21T23:05:53.0032801Z           "evidence": [
2026-06-21T23:05:53.0032926Z             {
2026-06-21T23:05:53.0033096Z               "path": "installer/install.ps1",
2026-06-21T23:05:53.0033226Z               "line": 57
2026-06-21T23:05:53.0033359Z             },
2026-06-21T23:05:53.0033487Z             {
2026-06-21T23:05:53.0033640Z               "path": "installer/install.sh",
2026-06-21T23:05:53.0033776Z               "line": 52
2026-06-21T23:05:53.0033899Z             }
2026-06-21T23:05:53.0034029Z           ]
2026-06-21T23:05:53.0034147Z         },
2026-06-21T23:05:53.0034281Z         "int": {
2026-06-21T23:05:53.0034424Z           "complete": true,
2026-06-21T23:05:53.0034558Z           "evidence": [
2026-06-21T23:05:53.0034696Z             {
2026-06-21T23:05:53.0034868Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T23:05:53.0034997Z               "line": 21
2026-06-21T23:05:53.0035115Z             }
2026-06-21T23:05:53.0035235Z           ]
2026-06-21T23:05:53.0035368Z         },
2026-06-21T23:05:53.0035497Z         "unit": {
2026-06-21T23:05:53.0035640Z           "complete": false,
2026-06-21T23:05:53.0035778Z           "evidence": []
2026-06-21T23:05:53.0035908Z         }
2026-06-21T23:05:53.0036031Z       }
2026-06-21T23:05:53.0036161Z     },
2026-06-21T23:05:53.0036288Z     {
2026-06-21T23:05:53.0036430Z       "id": "REQ-INSTALL-10",
2026-06-21T23:05:53.0038025Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T23:05:53.0038297Z       "requiredStages": [
2026-06-21T23:05:53.0038427Z         "impl",
2026-06-21T23:05:53.0038554Z         "unit"
2026-06-21T23:05:53.0038684Z       ],
2026-06-21T23:05:53.0038818Z       "stages": {
2026-06-21T23:05:53.0038935Z         "doc": {
2026-06-21T23:05:53.0039158Z           "complete": false,
2026-06-21T23:05:53.0039300Z           "evidence": []
2026-06-21T23:05:53.0039410Z         },
2026-06-21T23:05:53.0039538Z         "impl": {
2026-06-21T23:05:53.0039672Z           "complete": true,
2026-06-21T23:05:53.0039821Z           "evidence": [
2026-06-21T23:05:53.0039943Z             {
2026-06-21T23:05:53.0040110Z               "path": "installer/install.ps1",
2026-06-21T23:05:53.0040248Z               "line": 191
2026-06-21T23:05:53.0040374Z             }
2026-06-21T23:05:53.0040497Z           ]
2026-06-21T23:05:53.0040626Z         },
2026-06-21T23:05:53.0040749Z         "int": {
2026-06-21T23:05:53.0040897Z           "complete": false,
2026-06-21T23:05:53.0041036Z           "evidence": []
2026-06-21T23:05:53.0041159Z         },
2026-06-21T23:05:53.0041294Z         "unit": {
2026-06-21T23:05:53.0041435Z           "complete": true,
2026-06-21T23:05:53.0041571Z           "evidence": [
2026-06-21T23:05:53.0041699Z             {
2026-06-21T23:05:53.0041878Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T23:05:53.0042023Z               "line": 211
2026-06-21T23:05:53.0042145Z             }
2026-06-21T23:05:53.0042270Z           ]
2026-06-21T23:05:53.0042403Z         }
2026-06-21T23:05:53.0042532Z       }
2026-06-21T23:05:53.0042656Z     },
2026-06-21T23:05:53.0042784Z     {
2026-06-21T23:05:53.0042933Z       "id": "REQ-INSTALL-11",
2026-06-21T23:05:53.0044779Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T23:05:53.0044937Z       "requiredStages": [
2026-06-21T23:05:53.0045064Z         "doc",
2026-06-21T23:05:53.0045194Z         "impl",
2026-06-21T23:05:53.0045322Z         "unit"
2026-06-21T23:05:53.0045452Z       ],
2026-06-21T23:05:53.0045590Z       "stages": {
2026-06-21T23:05:53.0045723Z         "doc": {
2026-06-21T23:05:53.0045861Z           "complete": true,
2026-06-21T23:05:53.0046018Z           "evidence": [
2026-06-21T23:05:53.0046143Z             {
2026-06-21T23:05:53.0046295Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0046435Z               "line": 138
2026-06-21T23:05:53.0046557Z             },
2026-06-21T23:05:53.0046687Z             {
2026-06-21T23:05:53.0046839Z               "path": "docs/MANIFEST.md",
2026-06-21T23:05:53.0046971Z               "line": 82
2026-06-21T23:05:53.0047100Z             }
2026-06-21T23:05:53.0047232Z           ]
2026-06-21T23:05:53.0047360Z         },
2026-06-21T23:05:53.0047485Z         "impl": {
2026-06-21T23:05:53.0047627Z           "complete": true,
2026-06-21T23:05:53.0047757Z           "evidence": [
2026-06-21T23:05:53.0047889Z             {
2026-06-21T23:05:53.0048062Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.0048204Z               "line": 223
2026-06-21T23:05:53.0048447Z             },
2026-06-21T23:05:53.0048566Z             {
2026-06-21T23:05:53.0048843Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:53.0049053Z               "line": 99
2026-06-21T23:05:53.0049182Z             },
2026-06-21T23:05:53.0049311Z             {
2026-06-21T23:05:53.0049509Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:53.0049647Z               "line": 117
2026-06-21T23:05:53.0049770Z             },
2026-06-21T23:05:53.0049908Z             {
2026-06-21T23:05:53.0050080Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:05:53.0050212Z               "line": 332
2026-06-21T23:05:53.0050342Z             },
2026-06-21T23:05:53.0050465Z             {
2026-06-21T23:05:53.0050628Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:05:53.0050756Z               "line": 88
2026-06-21T23:05:53.0050877Z             },
2026-06-21T23:05:53.0050995Z             {
2026-06-21T23:05:53.0051162Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:05:53.0051291Z               "line": 104
2026-06-21T23:05:53.0051419Z             },
2026-06-21T23:05:53.0051549Z             {
2026-06-21T23:05:53.0051715Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0051859Z               "line": 297
2026-06-21T23:05:53.0051981Z             },
2026-06-21T23:05:53.0052102Z             {
2026-06-21T23:05:53.0052268Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0052395Z               "line": 332
2026-06-21T23:05:53.0052525Z             },
2026-06-21T23:05:53.0052648Z             {
2026-06-21T23:05:53.0052820Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0052954Z               "line": 523
2026-06-21T23:05:53.0053087Z             },
2026-06-21T23:05:53.0053207Z             {
2026-06-21T23:05:53.0053368Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0053507Z               "line": 546
2026-06-21T23:05:53.0053630Z             },
2026-06-21T23:05:53.0053755Z             {
2026-06-21T23:05:53.0053917Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0054046Z               "line": 561
2026-06-21T23:05:53.0054179Z             },
2026-06-21T23:05:53.0054303Z             {
2026-06-21T23:05:53.0054471Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:53.0054607Z               "line": 492
2026-06-21T23:05:53.0054741Z             }
2026-06-21T23:05:53.0054867Z           ]
2026-06-21T23:05:53.0054990Z         },
2026-06-21T23:05:53.0055125Z         "int": {
2026-06-21T23:05:53.0055263Z           "complete": false,
2026-06-21T23:05:53.0055397Z           "evidence": []
2026-06-21T23:05:53.0055525Z         },
2026-06-21T23:05:53.0055654Z         "unit": {
2026-06-21T23:05:53.0055783Z           "complete": true,
2026-06-21T23:05:53.0055925Z           "evidence": [
2026-06-21T23:05:53.0059360Z             {
2026-06-21T23:05:53.0059637Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0059780Z               "line": 799
2026-06-21T23:05:53.0059904Z             },
2026-06-21T23:05:53.0060036Z             {
2026-06-21T23:05:53.0060212Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0060353Z               "line": 811
2026-06-21T23:05:53.0060477Z             },
2026-06-21T23:05:53.0060602Z             {
2026-06-21T23:05:53.0060782Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0060912Z               "line": 820
2026-06-21T23:05:53.0061044Z             }
2026-06-21T23:05:53.0061169Z           ]
2026-06-21T23:05:53.0061302Z         }
2026-06-21T23:05:53.0061427Z       }
2026-06-21T23:05:53.0061546Z     },
2026-06-21T23:05:53.0061660Z     {
2026-06-21T23:05:53.0061804Z       "id": "REQ-INSTALL-12",
2026-06-21T23:05:53.0064501Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T23:05:53.0064974Z       "requiredStages": [
2026-06-21T23:05:53.0065106Z         "doc",
2026-06-21T23:05:53.0065233Z         "impl",
2026-06-21T23:05:53.0065363Z         "unit",
2026-06-21T23:05:53.0065484Z         "int"
2026-06-21T23:05:53.0065618Z       ],
2026-06-21T23:05:53.0065752Z       "stages": {
2026-06-21T23:05:53.0065880Z         "doc": {
2026-06-21T23:05:53.0066019Z           "complete": true,
2026-06-21T23:05:53.0066156Z           "evidence": [
2026-06-21T23:05:53.0066277Z             {
2026-06-21T23:05:53.0066414Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0066558Z               "line": 185
2026-06-21T23:05:53.0066686Z             }
2026-06-21T23:05:53.0066815Z           ]
2026-06-21T23:05:53.0066940Z         },
2026-06-21T23:05:53.0067072Z         "impl": {
2026-06-21T23:05:53.0067216Z           "complete": true,
2026-06-21T23:05:53.0067348Z           "evidence": [
2026-06-21T23:05:53.0067473Z             {
2026-06-21T23:05:53.0067653Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.0067778Z               "line": 27
2026-06-21T23:05:53.0067908Z             },
2026-06-21T23:05:53.0068035Z             {
2026-06-21T23:05:53.0068211Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.0068352Z               "line": 223
2026-06-21T23:05:53.0068480Z             },
2026-06-21T23:05:53.0068610Z             {
2026-06-21T23:05:53.0068771Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0068895Z               "line": 5677
2026-06-21T23:05:53.0069105Z             }
2026-06-21T23:05:53.0069220Z           ]
2026-06-21T23:05:53.0069343Z         },
2026-06-21T23:05:53.0069478Z         "int": {
2026-06-21T23:05:53.0069606Z           "complete": true,
2026-06-21T23:05:53.0069744Z           "evidence": [
2026-06-21T23:05:53.0069863Z             {
2026-06-21T23:05:53.0070050Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T23:05:53.0070178Z               "line": 19
2026-06-21T23:05:53.0070307Z             }
2026-06-21T23:05:53.0070427Z           ]
2026-06-21T23:05:53.0070544Z         },
2026-06-21T23:05:53.0070672Z         "unit": {
2026-06-21T23:05:53.0070810Z           "complete": true,
2026-06-21T23:05:53.0070946Z           "evidence": [
2026-06-21T23:05:53.0071076Z             {
2026-06-21T23:05:53.0071252Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.0071400Z               "line": 395
2026-06-21T23:05:53.0071519Z             },
2026-06-21T23:05:53.0071653Z             {
2026-06-21T23:05:53.0071824Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.0071963Z               "line": 421
2026-06-21T23:05:53.0072087Z             },
2026-06-21T23:05:53.0072215Z             {
2026-06-21T23:05:53.0072373Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.0072506Z               "line": 440
2026-06-21T23:05:53.0072636Z             },
2026-06-21T23:05:53.0072764Z             {
2026-06-21T23:05:53.0072931Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.0073069Z               "line": 475
2026-06-21T23:05:53.0073197Z             },
2026-06-21T23:05:53.0073318Z             {
2026-06-21T23:05:53.0073468Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0073717Z               "line": 8665
2026-06-21T23:05:53.0073849Z             }
2026-06-21T23:05:53.0074070Z           ]
2026-06-21T23:05:53.0074198Z         }
2026-06-21T23:05:53.0074322Z       }
2026-06-21T23:05:53.0074450Z     },
2026-06-21T23:05:53.0074575Z     {
2026-06-21T23:05:53.0074728Z       "id": "REQ-INSTALL-2",
2026-06-21T23:05:53.0074914Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T23:05:53.0075052Z       "requiredStages": [
2026-06-21T23:05:53.0075186Z         "doc"
2026-06-21T23:05:53.0075309Z       ],
2026-06-21T23:05:53.0075437Z       "stages": {
2026-06-21T23:05:53.0075558Z         "doc": {
2026-06-21T23:05:53.0075703Z           "complete": true,
2026-06-21T23:05:53.0075837Z           "evidence": [
2026-06-21T23:05:53.0075965Z             {
2026-06-21T23:05:53.0076115Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0076240Z               "line": 755
2026-06-21T23:05:53.0076378Z             }
2026-06-21T23:05:53.0076527Z           ]
2026-06-21T23:05:53.0076678Z         },
2026-06-21T23:05:53.0076813Z         "impl": {
2026-06-21T23:05:53.0076998Z           "complete": false,
2026-06-21T23:05:53.0077132Z           "evidence": []
2026-06-21T23:05:53.0077256Z         },
2026-06-21T23:05:53.0077385Z         "int": {
2026-06-21T23:05:53.0077556Z           "complete": false,
2026-06-21T23:05:53.0077704Z           "evidence": []
2026-06-21T23:05:53.0077852Z         },
2026-06-21T23:05:53.0077980Z         "unit": {
2026-06-21T23:05:53.0078129Z           "complete": false,
2026-06-21T23:05:53.0078285Z           "evidence": []
2026-06-21T23:05:53.0078420Z         }
2026-06-21T23:05:53.0078561Z       }
2026-06-21T23:05:53.0078709Z     },
2026-06-21T23:05:53.0078832Z     {
2026-06-21T23:05:53.0079055Z       "id": "REQ-INSTALL-3",
2026-06-21T23:05:53.0079245Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T23:05:53.0079390Z       "requiredStages": [
2026-06-21T23:05:53.0079522Z         "impl",
2026-06-21T23:05:53.0079651Z         "int"
2026-06-21T23:05:53.0079775Z       ],
2026-06-21T23:05:53.0079898Z       "stages": {
2026-06-21T23:05:53.0080033Z         "doc": {
2026-06-21T23:05:53.0080175Z           "complete": false,
2026-06-21T23:05:53.0080314Z           "evidence": []
2026-06-21T23:05:53.0080442Z         },
2026-06-21T23:05:53.0080576Z         "impl": {
2026-06-21T23:05:53.0080724Z           "complete": true,
2026-06-21T23:05:53.0080867Z           "evidence": [
2026-06-21T23:05:53.0081016Z             {
2026-06-21T23:05:53.0081185Z               "path": "installer/install.ps1",
2026-06-21T23:05:53.0081319Z               "line": 100
2026-06-21T23:05:53.0081450Z             },
2026-06-21T23:05:53.0081579Z             {
2026-06-21T23:05:53.0081732Z               "path": "installer/install.ps1",
2026-06-21T23:05:53.0081874Z               "line": 111
2026-06-21T23:05:53.0081999Z             },
2026-06-21T23:05:53.0082122Z             {
2026-06-21T23:05:53.0082276Z               "path": "installer/install.sh",
2026-06-21T23:05:53.0082408Z               "line": 79
2026-06-21T23:05:53.0082542Z             }
2026-06-21T23:05:53.0082666Z           ]
2026-06-21T23:05:53.0082794Z         },
2026-06-21T23:05:53.0082929Z         "int": {
2026-06-21T23:05:53.0083062Z           "complete": true,
2026-06-21T23:05:53.0083201Z           "evidence": [
2026-06-21T23:05:53.0083328Z             {
2026-06-21T23:05:53.0083511Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T23:05:53.0083652Z               "line": 167
2026-06-21T23:05:53.0083855Z             }
2026-06-21T23:05:53.0084029Z           ]
2026-06-21T23:05:53.0084157Z         },
2026-06-21T23:05:53.0084291Z         "unit": {
2026-06-21T23:05:53.0084429Z           "complete": false,
2026-06-21T23:05:53.0084582Z           "evidence": []
2026-06-21T23:05:53.0084772Z         }
2026-06-21T23:05:53.0084977Z       }
2026-06-21T23:05:53.0085183Z     },
2026-06-21T23:05:53.0085325Z     {
2026-06-21T23:05:53.0085507Z       "id": "REQ-INSTALL-4",
2026-06-21T23:05:53.0086359Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T23:05:53.0086609Z       "requiredStages": [
2026-06-21T23:05:53.0086729Z         "impl",
2026-06-21T23:05:53.0086858Z         "unit"
2026-06-21T23:05:53.0086981Z       ],
2026-06-21T23:05:53.0087106Z       "stages": {
2026-06-21T23:05:53.0087225Z         "doc": {
2026-06-21T23:05:53.0087359Z           "complete": false,
2026-06-21T23:05:53.0087497Z           "evidence": []
2026-06-21T23:05:53.0087615Z         },
2026-06-21T23:05:53.0087745Z         "impl": {
2026-06-21T23:05:53.0087892Z           "complete": true,
2026-06-21T23:05:53.0088017Z           "evidence": [
2026-06-21T23:05:53.0088150Z             {
2026-06-21T23:05:53.0088346Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.0088488Z               "line": 165
2026-06-21T23:05:53.0088613Z             },
2026-06-21T23:05:53.0088765Z             {
2026-06-21T23:05:53.0089014Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0089159Z               "line": 29
2026-06-21T23:05:53.0089297Z             },
2026-06-21T23:05:53.0089420Z             {
2026-06-21T23:05:53.0089591Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0089726Z               "line": 288
2026-06-21T23:05:53.0089853Z             },
2026-06-21T23:05:53.0089969Z             {
2026-06-21T23:05:53.0090139Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0090279Z               "line": 356
2026-06-21T23:05:53.0090402Z             },
2026-06-21T23:05:53.0090535Z             {
2026-06-21T23:05:53.0090736Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0090875Z               "line": 386
2026-06-21T23:05:53.0090993Z             },
2026-06-21T23:05:53.0091107Z             {
2026-06-21T23:05:53.0091322Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0091465Z               "line": 434
2026-06-21T23:05:53.0091595Z             },
2026-06-21T23:05:53.0091717Z             {
2026-06-21T23:05:53.0091874Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0092019Z               "line": 5396
2026-06-21T23:05:53.0092134Z             }
2026-06-21T23:05:53.0092264Z           ]
2026-06-21T23:05:53.0092386Z         },
2026-06-21T23:05:53.0092512Z         "int": {
2026-06-21T23:05:53.0092658Z           "complete": false,
2026-06-21T23:05:53.0092802Z           "evidence": []
2026-06-21T23:05:53.0092936Z         },
2026-06-21T23:05:53.0093063Z         "unit": {
2026-06-21T23:05:53.0093197Z           "complete": true,
2026-06-21T23:05:53.0093330Z           "evidence": [
2026-06-21T23:05:53.0093461Z             {
2026-06-21T23:05:53.0093640Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.0093780Z               "line": 375
2026-06-21T23:05:53.0093917Z             },
2026-06-21T23:05:53.0094042Z             {
2026-06-21T23:05:53.0094222Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0094357Z               "line": 808
2026-06-21T23:05:53.0094490Z             },
2026-06-21T23:05:53.0094622Z             {
2026-06-21T23:05:53.0094785Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0094927Z               "line": 849
2026-06-21T23:05:53.0095047Z             },
2026-06-21T23:05:53.0095180Z             {
2026-06-21T23:05:53.0095347Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0095481Z               "line": 869
2026-06-21T23:05:53.0095604Z             },
2026-06-21T23:05:53.0095729Z             {
2026-06-21T23:05:53.0095880Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0096016Z               "line": 8403
2026-06-21T23:05:53.0096148Z             }
2026-06-21T23:05:53.0096267Z           ]
2026-06-21T23:05:53.0096396Z         }
2026-06-21T23:05:53.0096630Z       }
2026-06-21T23:05:53.0096758Z     },
2026-06-21T23:05:53.0096876Z     {
2026-06-21T23:05:53.0097141Z       "id": "REQ-INSTALL-5",
2026-06-21T23:05:53.0097700Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T23:05:53.0097870Z       "requiredStages": [
2026-06-21T23:05:53.0098009Z         "impl",
2026-06-21T23:05:53.0098137Z         "int"
2026-06-21T23:05:53.0098253Z       ],
2026-06-21T23:05:53.0098409Z       "stages": {
2026-06-21T23:05:53.0098538Z         "doc": {
2026-06-21T23:05:53.0098681Z           "complete": false,
2026-06-21T23:05:53.0098809Z           "evidence": []
2026-06-21T23:05:53.0099024Z         },
2026-06-21T23:05:53.0099163Z         "impl": {
2026-06-21T23:05:53.0099292Z           "complete": true,
2026-06-21T23:05:53.0099439Z           "evidence": [
2026-06-21T23:05:53.0099564Z             {
2026-06-21T23:05:53.0099734Z               "path": "installer/install.ps1",
2026-06-21T23:05:53.0099867Z               "line": 5
2026-06-21T23:05:53.0099999Z             },
2026-06-21T23:05:53.0100117Z             {
2026-06-21T23:05:53.0100271Z               "path": "installer/install.sh",
2026-06-21T23:05:53.0100408Z               "line": 6
2026-06-21T23:05:53.0100538Z             }
2026-06-21T23:05:53.0100666Z           ]
2026-06-21T23:05:53.0100791Z         },
2026-06-21T23:05:53.0100914Z         "int": {
2026-06-21T23:05:53.0101062Z           "complete": true,
2026-06-21T23:05:53.0101187Z           "evidence": [
2026-06-21T23:05:53.0101310Z             {
2026-06-21T23:05:53.0101483Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T23:05:53.0101620Z               "line": 22
2026-06-21T23:05:53.0101740Z             }
2026-06-21T23:05:53.0101868Z           ]
2026-06-21T23:05:53.0101987Z         },
2026-06-21T23:05:53.0102107Z         "unit": {
2026-06-21T23:05:53.0102244Z           "complete": false,
2026-06-21T23:05:53.0102387Z           "evidence": []
2026-06-21T23:05:53.0102514Z         }
2026-06-21T23:05:53.0102637Z       }
2026-06-21T23:05:53.0102751Z     },
2026-06-21T23:05:53.0102880Z     {
2026-06-21T23:05:53.0103013Z       "id": "REQ-INSTALL-6",
2026-06-21T23:05:53.0104287Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T23:05:53.0104434Z       "requiredStages": [
2026-06-21T23:05:53.0104559Z         "impl",
2026-06-21T23:05:53.0104694Z         "unit"
2026-06-21T23:05:53.0104811Z       ],
2026-06-21T23:05:53.0104946Z       "stages": {
2026-06-21T23:05:53.0105073Z         "doc": {
2026-06-21T23:05:53.0105219Z           "complete": false,
2026-06-21T23:05:53.0105354Z           "evidence": []
2026-06-21T23:05:53.0105482Z         },
2026-06-21T23:05:53.0105626Z         "impl": {
2026-06-21T23:05:53.0105759Z           "complete": true,
2026-06-21T23:05:53.0105898Z           "evidence": [
2026-06-21T23:05:53.0106026Z             {
2026-06-21T23:05:53.0106208Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:53.0106341Z               "line": 61
2026-06-21T23:05:53.0106474Z             },
2026-06-21T23:05:53.0106604Z             {
2026-06-21T23:05:53.0106784Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:53.0106924Z               "line": 641
2026-06-21T23:05:53.0107065Z             },
2026-06-21T23:05:53.0107215Z             {
2026-06-21T23:05:53.0107389Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:53.0107527Z               "line": 191
2026-06-21T23:05:53.0107659Z             },
2026-06-21T23:05:53.0107782Z             {
2026-06-21T23:05:53.0107955Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:53.0108193Z               "line": 276
2026-06-21T23:05:53.0108420Z             },
2026-06-21T23:05:53.0108536Z             {
2026-06-21T23:05:53.0108693Z               "path": "crates/spt/src/main.rs",
2026-06-21T23:05:53.0108823Z               "line": 43
2026-06-21T23:05:53.0109007Z             },
2026-06-21T23:05:53.0109128Z             {
2026-06-21T23:05:53.0109280Z               "path": "installer/install.sh",
2026-06-21T23:05:53.0109423Z               "line": 104
2026-06-21T23:05:53.0109556Z             }
2026-06-21T23:05:53.0109680Z           ]
2026-06-21T23:05:53.0109809Z         },
2026-06-21T23:05:53.0109937Z         "int": {
2026-06-21T23:05:53.0110082Z           "complete": false,
2026-06-21T23:05:53.0110238Z           "evidence": []
2026-06-21T23:05:53.0110380Z         },
2026-06-21T23:05:53.0110498Z         "unit": {
2026-06-21T23:05:53.0110644Z           "complete": true,
2026-06-21T23:05:53.0110784Z           "evidence": [
2026-06-21T23:05:53.0110916Z             {
2026-06-21T23:05:53.0111089Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:05:53.0111231Z               "line": 894
2026-06-21T23:05:53.0111356Z             }
2026-06-21T23:05:53.0111489Z           ]
2026-06-21T23:05:53.0111612Z         }
2026-06-21T23:05:53.0111742Z       }
2026-06-21T23:05:53.0111861Z     },
2026-06-21T23:05:53.0111980Z     {
2026-06-21T23:05:53.0112118Z       "id": "REQ-INSTALL-7",
2026-06-21T23:05:53.0113297Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T23:05:53.0113459Z       "requiredStages": [
2026-06-21T23:05:53.0113573Z         "impl"
2026-06-21T23:05:53.0113702Z       ],
2026-06-21T23:05:53.0113840Z       "stages": {
2026-06-21T23:05:53.0113970Z         "doc": {
2026-06-21T23:05:53.0114103Z           "complete": false,
2026-06-21T23:05:53.0114247Z           "evidence": []
2026-06-21T23:05:53.0114379Z         },
2026-06-21T23:05:53.0114508Z         "impl": {
2026-06-21T23:05:53.0114661Z           "complete": true,
2026-06-21T23:05:53.0114789Z           "evidence": [
2026-06-21T23:05:53.0114919Z             {
2026-06-21T23:05:53.0115076Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0115220Z               "line": 3920
2026-06-21T23:05:53.0115351Z             },
2026-06-21T23:05:53.0115472Z             {
2026-06-21T23:05:53.0115629Z               "path": "installer/install.ps1",
2026-06-21T23:05:53.0115752Z               "line": 157
2026-06-21T23:05:53.0115886Z             }
2026-06-21T23:05:53.0116019Z           ]
2026-06-21T23:05:53.0116148Z         },
2026-06-21T23:05:53.0116282Z         "int": {
2026-06-21T23:05:53.0116419Z           "complete": false,
2026-06-21T23:05:53.0116567Z           "evidence": []
2026-06-21T23:05:53.0116691Z         },
2026-06-21T23:05:53.0116830Z         "unit": {
2026-06-21T23:05:53.0116972Z           "complete": false,
2026-06-21T23:05:53.0117111Z           "evidence": []
2026-06-21T23:05:53.0117244Z         }
2026-06-21T23:05:53.0117368Z       }
2026-06-21T23:05:53.0117498Z     },
2026-06-21T23:05:53.0117621Z     {
2026-06-21T23:05:53.0117770Z       "id": "REQ-INSTALL-8",
2026-06-21T23:05:53.0118891Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T23:05:53.0119200Z       "requiredStages": [
2026-06-21T23:05:53.0119335Z         "impl"
2026-06-21T23:05:53.0119563Z       ],
2026-06-21T23:05:53.0119693Z       "stages": {
2026-06-21T23:05:53.0119821Z         "doc": {
2026-06-21T23:05:53.0120055Z           "complete": false,
2026-06-21T23:05:53.0120188Z           "evidence": []
2026-06-21T23:05:53.0120313Z         },
2026-06-21T23:05:53.0120449Z         "impl": {
2026-06-21T23:05:53.0120579Z           "complete": true,
2026-06-21T23:05:53.0120718Z           "evidence": [
2026-06-21T23:05:53.0120835Z             {
2026-06-21T23:05:53.0120988Z               "path": "installer/install.ps1",
2026-06-21T23:05:53.0121129Z               "line": 184
2026-06-21T23:05:53.0121252Z             },
2026-06-21T23:05:53.0121382Z             {
2026-06-21T23:05:53.0121538Z               "path": "installer/install.sh",
2026-06-21T23:05:53.0121678Z               "line": 121
2026-06-21T23:05:53.0121801Z             }
2026-06-21T23:05:53.0121931Z           ]
2026-06-21T23:05:53.0122064Z         },
2026-06-21T23:05:53.0122192Z         "int": {
2026-06-21T23:05:53.0122335Z           "complete": false,
2026-06-21T23:05:53.0122487Z           "evidence": []
2026-06-21T23:05:53.0122617Z         },
2026-06-21T23:05:53.0122745Z         "unit": {
2026-06-21T23:05:53.0122885Z           "complete": false,
2026-06-21T23:05:53.0123021Z           "evidence": []
2026-06-21T23:05:53.0123146Z         }
2026-06-21T23:05:53.0123275Z       }
2026-06-21T23:05:53.0123402Z     },
2026-06-21T23:05:53.0123531Z     {
2026-06-21T23:05:53.0123672Z       "id": "REQ-INSTALL-9",
2026-06-21T23:05:53.0124949Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T23:05:53.0125112Z       "requiredStages": [
2026-06-21T23:05:53.0125235Z         "doc",
2026-06-21T23:05:53.0125374Z         "impl",
2026-06-21T23:05:53.0125508Z         "unit"
2026-06-21T23:05:53.0125632Z       ],
2026-06-21T23:05:53.0125766Z       "stages": {
2026-06-21T23:05:53.0125893Z         "doc": {
2026-06-21T23:05:53.0126042Z           "complete": true,
2026-06-21T23:05:53.0126180Z           "evidence": [
2026-06-21T23:05:53.0126312Z             {
2026-06-21T23:05:53.0126456Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0126597Z               "line": 771
2026-06-21T23:05:53.0126732Z             }
2026-06-21T23:05:53.0126852Z           ]
2026-06-21T23:05:53.0126979Z         },
2026-06-21T23:05:53.0127137Z         "impl": {
2026-06-21T23:05:53.0127284Z           "complete": true,
2026-06-21T23:05:53.0127410Z           "evidence": [
2026-06-21T23:05:53.0127537Z             {
2026-06-21T23:05:53.0127686Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0127818Z               "line": 2535
2026-06-21T23:05:53.0127952Z             },
2026-06-21T23:05:53.0128077Z             {
2026-06-21T23:05:53.0128233Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0128383Z               "line": 2559
2026-06-21T23:05:53.0128504Z             }
2026-06-21T23:05:53.0128633Z           ]
2026-06-21T23:05:53.0128756Z         },
2026-06-21T23:05:53.0128888Z         "int": {
2026-06-21T23:05:53.0129085Z           "complete": false,
2026-06-21T23:05:53.0129226Z           "evidence": []
2026-06-21T23:05:53.0129361Z         },
2026-06-21T23:05:53.0129493Z         "unit": {
2026-06-21T23:05:53.0129633Z           "complete": true,
2026-06-21T23:05:53.0129761Z           "evidence": [
2026-06-21T23:05:53.0129895Z             {
2026-06-21T23:05:53.0130047Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0130194Z               "line": 7591
2026-06-21T23:05:53.0130319Z             },
2026-06-21T23:05:53.0130452Z             {
2026-06-21T23:05:53.0130611Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0130753Z               "line": 8433
2026-06-21T23:05:53.0130991Z             }
2026-06-21T23:05:53.0131115Z           ]
2026-06-21T23:05:53.0131245Z         }
2026-06-21T23:05:53.0131457Z       }
2026-06-21T23:05:53.0131586Z     },
2026-06-21T23:05:53.0131717Z     {
2026-06-21T23:05:53.0131856Z       "id": "REQ-KICK-1",
2026-06-21T23:05:53.0134398Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T23:05:53.0134575Z       "requiredStages": [
2026-06-21T23:05:53.0134708Z         "doc",
2026-06-21T23:05:53.0134842Z         "impl",
2026-06-21T23:05:53.0134970Z         "unit",
2026-06-21T23:05:53.0135100Z         "int"
2026-06-21T23:05:53.0135228Z       ],
2026-06-21T23:05:53.0135348Z       "stages": {
2026-06-21T23:05:53.0135476Z         "doc": {
2026-06-21T23:05:53.0135619Z           "complete": true,
2026-06-21T23:05:53.0135753Z           "evidence": [
2026-06-21T23:05:53.0135881Z             {
2026-06-21T23:05:53.0136035Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0136177Z               "line": 342
2026-06-21T23:05:53.0136307Z             }
2026-06-21T23:05:53.0136434Z           ]
2026-06-21T23:05:53.0136563Z         },
2026-06-21T23:05:53.0136693Z         "impl": {
2026-06-21T23:05:53.0136829Z           "complete": true,
2026-06-21T23:05:53.0136972Z           "evidence": [
2026-06-21T23:05:53.0137097Z             {
2026-06-21T23:05:53.0137273Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:05:53.0137421Z               "line": 41
2026-06-21T23:05:53.0137544Z             },
2026-06-21T23:05:53.0137669Z             {
2026-06-21T23:05:53.0137820Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0137955Z               "line": 701
2026-06-21T23:05:53.0138089Z             }
2026-06-21T23:05:53.0138212Z           ]
2026-06-21T23:05:53.0138341Z         },
2026-06-21T23:05:53.0138469Z         "int": {
2026-06-21T23:05:53.0138614Z           "complete": true,
2026-06-21T23:05:53.0138736Z           "evidence": [
2026-06-21T23:05:53.0138861Z             {
2026-06-21T23:05:53.0139135Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:53.0139279Z               "line": 916
2026-06-21T23:05:53.0139405Z             }
2026-06-21T23:05:53.0139534Z           ]
2026-06-21T23:05:53.0139659Z         },
2026-06-21T23:05:53.0139786Z         "unit": {
2026-06-21T23:05:53.0139926Z           "complete": true,
2026-06-21T23:05:53.0140063Z           "evidence": [
2026-06-21T23:05:53.0140188Z             {
2026-06-21T23:05:53.0140368Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:05:53.0140503Z               "line": 205
2026-06-21T23:05:53.0140632Z             }
2026-06-21T23:05:53.0140745Z           ]
2026-06-21T23:05:53.0140870Z         }
2026-06-21T23:05:53.0141002Z       }
2026-06-21T23:05:53.0141123Z     },
2026-06-21T23:05:53.0141241Z     {
2026-06-21T23:05:53.0141389Z       "id": "REQ-MANIFEST-1",
2026-06-21T23:05:53.0141627Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T23:05:53.0141767Z       "requiredStages": [
2026-06-21T23:05:53.0141889Z         "doc",
2026-06-21T23:05:53.0142021Z         "impl",
2026-06-21T23:05:53.0142146Z         "unit"
2026-06-21T23:05:53.0142273Z       ],
2026-06-21T23:05:53.0142401Z       "stages": {
2026-06-21T23:05:53.0142644Z         "doc": {
2026-06-21T23:05:53.0142778Z           "complete": true,
2026-06-21T23:05:53.0143031Z           "evidence": [
2026-06-21T23:05:53.0143160Z             {
2026-06-21T23:05:53.0143312Z               "path": "docs/MANIFEST.md",
2026-06-21T23:05:53.0143441Z               "line": 19
2026-06-21T23:05:53.0143569Z             }
2026-06-21T23:05:53.0143700Z           ]
2026-06-21T23:05:53.0143813Z         },
2026-06-21T23:05:53.0143936Z         "impl": {
2026-06-21T23:05:53.0144085Z           "complete": true,
2026-06-21T23:05:53.0144213Z           "evidence": [
2026-06-21T23:05:53.0144339Z             {
2026-06-21T23:05:53.0144513Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0144656Z               "line": 18
2026-06-21T23:05:53.0144764Z             }
2026-06-21T23:05:53.0144896Z           ]
2026-06-21T23:05:53.0145021Z         },
2026-06-21T23:05:53.0145140Z         "int": {
2026-06-21T23:05:53.0145288Z           "complete": false,
2026-06-21T23:05:53.0145417Z           "evidence": []
2026-06-21T23:05:53.0145564Z         },
2026-06-21T23:05:53.0145688Z         "unit": {
2026-06-21T23:05:53.0145835Z           "complete": true,
2026-06-21T23:05:53.0145979Z           "evidence": [
2026-06-21T23:05:53.0146108Z             {
2026-06-21T23:05:53.0146285Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0146427Z               "line": 1029
2026-06-21T23:05:53.0146557Z             },
2026-06-21T23:05:53.0146685Z             {
2026-06-21T23:05:53.0146862Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0147004Z               "line": 1325
2026-06-21T23:05:53.0147133Z             },
2026-06-21T23:05:53.0147258Z             {
2026-06-21T23:05:53.0147432Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0147561Z               "line": 1337
2026-06-21T23:05:53.0147690Z             },
2026-06-21T23:05:53.0147818Z             {
2026-06-21T23:05:53.0147995Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0148123Z               "line": 1348
2026-06-21T23:05:53.0148258Z             },
2026-06-21T23:05:53.0148371Z             {
2026-06-21T23:05:53.0148548Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0148681Z               "line": 1365
2026-06-21T23:05:53.0148821Z             },
2026-06-21T23:05:53.0149015Z             {
2026-06-21T23:05:53.0149207Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0149353Z               "line": 1379
2026-06-21T23:05:53.0149479Z             },
2026-06-21T23:05:53.0149629Z             {
2026-06-21T23:05:53.0149796Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0149941Z               "line": 1495
2026-06-21T23:05:53.0150071Z             },
2026-06-21T23:05:53.0150191Z             {
2026-06-21T23:05:53.0150371Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0150509Z               "line": 1510
2026-06-21T23:05:53.0150642Z             },
2026-06-21T23:05:53.0150772Z             {
2026-06-21T23:05:53.0150952Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0151082Z               "line": 1621
2026-06-21T23:05:53.0151206Z             },
2026-06-21T23:05:53.0151339Z             {
2026-06-21T23:05:53.0151506Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0151634Z               "line": 1632
2026-06-21T23:05:53.0151764Z             }
2026-06-21T23:05:53.0151891Z           ]
2026-06-21T23:05:53.0152022Z         }
2026-06-21T23:05:53.0152144Z       }
2026-06-21T23:05:53.0152274Z     },
2026-06-21T23:05:53.0152385Z     {
2026-06-21T23:05:53.0152530Z       "id": "REQ-MANIFEST-2",
2026-06-21T23:05:53.0153072Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T23:05:53.0153223Z       "requiredStages": [
2026-06-21T23:05:53.0153462Z         "doc",
2026-06-21T23:05:53.0153582Z         "impl",
2026-06-21T23:05:53.0153710Z         "unit"
2026-06-21T23:05:53.0153925Z       ],
2026-06-21T23:05:53.0154058Z       "stages": {
2026-06-21T23:05:53.0154186Z         "doc": {
2026-06-21T23:05:53.0154312Z           "complete": true,
2026-06-21T23:05:53.0154439Z           "evidence": [
2026-06-21T23:05:53.0154565Z             {
2026-06-21T23:05:53.0154711Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0154846Z               "line": 75
2026-06-21T23:05:53.0154969Z             }
2026-06-21T23:05:53.0155106Z           ]
2026-06-21T23:05:53.0155225Z         },
2026-06-21T23:05:53.0155356Z         "impl": {
2026-06-21T23:05:53.0155485Z           "complete": true,
2026-06-21T23:05:53.0155620Z           "evidence": [
2026-06-21T23:05:53.0155738Z             {
2026-06-21T23:05:53.0155910Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0156048Z               "line": 82
2026-06-21T23:05:53.0156173Z             },
2026-06-21T23:05:53.0156301Z             {
2026-06-21T23:05:53.0156473Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0156620Z               "line": 15
2026-06-21T23:05:53.0156739Z             },
2026-06-21T23:05:53.0156873Z             {
2026-06-21T23:05:53.0157049Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0157183Z               "line": 65
2026-06-21T23:05:53.0157321Z             },
2026-06-21T23:05:53.0157446Z             {
2026-06-21T23:05:53.0157616Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0157746Z               "line": 83
2026-06-21T23:05:53.0157874Z             },
2026-06-21T23:05:53.0158006Z             {
2026-06-21T23:05:53.0158174Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0158316Z               "line": 183
2026-06-21T23:05:53.0158441Z             },
2026-06-21T23:05:53.0158579Z             {
2026-06-21T23:05:53.0158756Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0158894Z               "line": 527
2026-06-21T23:05:53.0159113Z             },
2026-06-21T23:05:53.0159237Z             {
2026-06-21T23:05:53.0159414Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0159552Z               "line": 553
2026-06-21T23:05:53.0159677Z             },
2026-06-21T23:05:53.0159804Z             {
2026-06-21T23:05:53.0159976Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0160119Z               "line": 671
2026-06-21T23:05:53.0160237Z             },
2026-06-21T23:05:53.0160366Z             {
2026-06-21T23:05:53.0160540Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0160673Z               "line": 696
2026-06-21T23:05:53.0160793Z             },
2026-06-21T23:05:53.0160916Z             {
2026-06-21T23:05:53.0165187Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0165357Z               "line": 719
2026-06-21T23:05:53.0165506Z             },
2026-06-21T23:05:53.0165633Z             {
2026-06-21T23:05:53.0165828Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0165983Z               "line": 734
2026-06-21T23:05:53.0166112Z             },
2026-06-21T23:05:53.0166245Z             {
2026-06-21T23:05:53.0166413Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0166551Z               "line": 5567
2026-06-21T23:05:53.0166669Z             },
2026-06-21T23:05:53.0166799Z             {
2026-06-21T23:05:53.0166961Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0167100Z               "line": 5581
2026-06-21T23:05:53.0167232Z             },
2026-06-21T23:05:53.0167348Z             {
2026-06-21T23:05:53.0167510Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0167638Z               "line": 5615
2026-06-21T23:05:53.0167771Z             }
2026-06-21T23:05:53.0167905Z           ]
2026-06-21T23:05:53.0168026Z         },
2026-06-21T23:05:53.0168306Z         "int": {
2026-06-21T23:05:53.0168453Z           "complete": false,
2026-06-21T23:05:53.0168595Z           "evidence": []
2026-06-21T23:05:53.0168824Z         },
2026-06-21T23:05:53.0169020Z         "unit": {
2026-06-21T23:05:53.0169163Z           "complete": true,
2026-06-21T23:05:53.0169293Z           "evidence": [
2026-06-21T23:05:53.0169426Z             {
2026-06-21T23:05:53.0169602Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0169740Z               "line": 921
2026-06-21T23:05:53.0169863Z             },
2026-06-21T23:05:53.0169993Z             {
2026-06-21T23:05:53.0170168Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0170303Z               "line": 211
2026-06-21T23:05:53.0170431Z             },
2026-06-21T23:05:53.0170551Z             {
2026-06-21T23:05:53.0170722Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0170849Z               "line": 272
2026-06-21T23:05:53.0170982Z             },
2026-06-21T23:05:53.0171109Z             {
2026-06-21T23:05:53.0171278Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0171414Z               "line": 313
2026-06-21T23:05:53.0171539Z             },
2026-06-21T23:05:53.0171672Z             {
2026-06-21T23:05:53.0171840Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0171978Z               "line": 325
2026-06-21T23:05:53.0172101Z             },
2026-06-21T23:05:53.0172226Z             {
2026-06-21T23:05:53.0172401Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0172531Z               "line": 336
2026-06-21T23:05:53.0172645Z             },
2026-06-21T23:05:53.0172769Z             {
2026-06-21T23:05:53.0172945Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0173084Z               "line": 345
2026-06-21T23:05:53.0173208Z             },
2026-06-21T23:05:53.0173341Z             {
2026-06-21T23:05:53.0173514Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0173660Z               "line": 361
2026-06-21T23:05:53.0173793Z             },
2026-06-21T23:05:53.0173925Z             {
2026-06-21T23:05:53.0174096Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0174221Z               "line": 444
2026-06-21T23:05:53.0174353Z             },
2026-06-21T23:05:53.0174478Z             {
2026-06-21T23:05:53.0174653Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0174798Z               "line": 958
2026-06-21T23:05:53.0174916Z             },
2026-06-21T23:05:53.0175046Z             {
2026-06-21T23:05:53.0175212Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0175351Z               "line": 982
2026-06-21T23:05:53.0175479Z             },
2026-06-21T23:05:53.0175608Z             {
2026-06-21T23:05:53.0175780Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0175917Z               "line": 1008
2026-06-21T23:05:53.0176052Z             },
2026-06-21T23:05:53.0176174Z             {
2026-06-21T23:05:53.0176350Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0176482Z               "line": 1027
2026-06-21T23:05:53.0176610Z             },
2026-06-21T23:05:53.0176740Z             {
2026-06-21T23:05:53.0176896Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0177035Z               "line": 1058
2026-06-21T23:05:53.0177163Z             },
2026-06-21T23:05:53.0177293Z             {
2026-06-21T23:05:53.0177464Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:53.0177603Z               "line": 309
2026-06-21T23:05:53.0177740Z             },
2026-06-21T23:05:53.0177860Z             {
2026-06-21T23:05:53.0178017Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:53.0178141Z               "line": 606
2026-06-21T23:05:53.0178271Z             },
2026-06-21T23:05:53.0178393Z             {
2026-06-21T23:05:53.0178661Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0178789Z               "line": 8610
2026-06-21T23:05:53.0179084Z             },
2026-06-21T23:05:53.0179213Z             {
2026-06-21T23:05:53.0179394Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0179542Z               "line": 9558
2026-06-21T23:05:53.0179657Z             }
2026-06-21T23:05:53.0179775Z           ]
2026-06-21T23:05:53.0179900Z         }
2026-06-21T23:05:53.0180023Z       }
2026-06-21T23:05:53.0180138Z     },
2026-06-21T23:05:53.0180248Z     {
2026-06-21T23:05:53.0180400Z       "id": "REQ-MANIFEST-3",
2026-06-21T23:05:53.0181106Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T23:05:53.0181263Z       "requiredStages": [
2026-06-21T23:05:53.0181390Z         "doc",
2026-06-21T23:05:53.0181514Z         "impl",
2026-06-21T23:05:53.0181651Z         "unit"
2026-06-21T23:05:53.0181780Z       ],
2026-06-21T23:05:53.0181913Z       "stages": {
2026-06-21T23:05:53.0182051Z         "doc": {
2026-06-21T23:05:53.0182190Z           "complete": true,
2026-06-21T23:05:53.0182327Z           "evidence": [
2026-06-21T23:05:53.0182448Z             {
2026-06-21T23:05:53.0182595Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0182720Z               "line": 81
2026-06-21T23:05:53.0182843Z             }
2026-06-21T23:05:53.0182971Z           ]
2026-06-21T23:05:53.0183091Z         },
2026-06-21T23:05:53.0183215Z         "impl": {
2026-06-21T23:05:53.0183349Z           "complete": true,
2026-06-21T23:05:53.0183487Z           "evidence": [
2026-06-21T23:05:53.0183610Z             {
2026-06-21T23:05:53.0183782Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0183916Z               "line": 92
2026-06-21T23:05:53.0184036Z             },
2026-06-21T23:05:53.0184159Z             {
2026-06-21T23:05:53.0184330Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0184470Z               "line": 101
2026-06-21T23:05:53.0184599Z             },
2026-06-21T23:05:53.0184724Z             {
2026-06-21T23:05:53.0184894Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0185029Z               "line": 132
2026-06-21T23:05:53.0185157Z             },
2026-06-21T23:05:53.0185282Z             {
2026-06-21T23:05:53.0185448Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0185576Z               "line": 577
2026-06-21T23:05:53.0185705Z             },
2026-06-21T23:05:53.0185833Z             {
2026-06-21T23:05:53.0186002Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0186153Z               "line": 633
2026-06-21T23:05:53.0186283Z             },
2026-06-21T23:05:53.0186415Z             {
2026-06-21T23:05:53.0186570Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0186706Z               "line": 5628
2026-06-21T23:05:53.0186834Z             },
2026-06-21T23:05:53.0186958Z             {
2026-06-21T23:05:53.0187113Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0187257Z               "line": 5654
2026-06-21T23:05:53.0187389Z             }
2026-06-21T23:05:53.0187514Z           ]
2026-06-21T23:05:53.0187638Z         },
2026-06-21T23:05:53.0187776Z         "int": {
2026-06-21T23:05:53.0187905Z           "complete": false,
2026-06-21T23:05:53.0188043Z           "evidence": []
2026-06-21T23:05:53.0188168Z         },
2026-06-21T23:05:53.0188295Z         "unit": {
2026-06-21T23:05:53.0188429Z           "complete": true,
2026-06-21T23:05:53.0188568Z           "evidence": [
2026-06-21T23:05:53.0188691Z             {
2026-06-21T23:05:53.0188864Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0189059Z               "line": 371
2026-06-21T23:05:53.0189189Z             },
2026-06-21T23:05:53.0189330Z             {
2026-06-21T23:05:53.0189504Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0189768Z               "line": 429
2026-06-21T23:05:53.0189893Z             },
2026-06-21T23:05:53.0190117Z             {
2026-06-21T23:05:53.0190287Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0190422Z               "line": 1082
2026-06-21T23:05:53.0190555Z             },
2026-06-21T23:05:53.0190679Z             {
2026-06-21T23:05:53.0190832Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0190974Z               "line": 8703
2026-06-21T23:05:53.0191104Z             }
2026-06-21T23:05:53.0191227Z           ]
2026-06-21T23:05:53.0191343Z         }
2026-06-21T23:05:53.0191461Z       }
2026-06-21T23:05:53.0191589Z     },
2026-06-21T23:05:53.0191720Z     {
2026-06-21T23:05:53.0191861Z       "id": "REQ-MANIFEST-4",
2026-06-21T23:05:53.0192587Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T23:05:53.0192750Z       "requiredStages": [
2026-06-21T23:05:53.0192887Z         "doc",
2026-06-21T23:05:53.0193017Z         "impl",
2026-06-21T23:05:53.0193145Z         "unit"
2026-06-21T23:05:53.0193260Z       ],
2026-06-21T23:05:53.0193384Z       "stages": {
2026-06-21T23:05:53.0193512Z         "doc": {
2026-06-21T23:05:53.0193647Z           "complete": true,
2026-06-21T23:05:53.0193779Z           "evidence": [
2026-06-21T23:05:53.0193909Z             {
2026-06-21T23:05:53.0194056Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0194185Z               "line": 88
2026-06-21T23:05:53.0194314Z             }
2026-06-21T23:05:53.0194433Z           ]
2026-06-21T23:05:53.0194563Z         },
2026-06-21T23:05:53.0194690Z         "impl": {
2026-06-21T23:05:53.0194822Z           "complete": true,
2026-06-21T23:05:53.0194951Z           "evidence": [
2026-06-21T23:05:53.0195074Z             {
2026-06-21T23:05:53.0195250Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0195388Z               "line": 100
2026-06-21T23:05:53.0195522Z             },
2026-06-21T23:05:53.0195646Z             {
2026-06-21T23:05:53.0195822Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0195951Z               "line": 183
2026-06-21T23:05:53.0196079Z             },
2026-06-21T23:05:53.0196209Z             {
2026-06-21T23:05:53.0196375Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:53.0196505Z               "line": 83
2026-06-21T23:05:53.0196628Z             },
2026-06-21T23:05:53.0196757Z             {
2026-06-21T23:05:53.0196933Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0197072Z               "line": 629
2026-06-21T23:05:53.0197201Z             },
2026-06-21T23:05:53.0197327Z             {
2026-06-21T23:05:53.0197494Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0197621Z               "line": 654
2026-06-21T23:05:53.0197750Z             }
2026-06-21T23:05:53.0197880Z           ]
2026-06-21T23:05:53.0198002Z         },
2026-06-21T23:05:53.0198132Z         "int": {
2026-06-21T23:05:53.0198269Z           "complete": false,
2026-06-21T23:05:53.0198399Z           "evidence": []
2026-06-21T23:05:53.0198527Z         },
2026-06-21T23:05:53.0198655Z         "unit": {
2026-06-21T23:05:53.0198794Z           "complete": true,
2026-06-21T23:05:53.0198923Z           "evidence": [
2026-06-21T23:05:53.0199138Z             {
2026-06-21T23:05:53.0199299Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0199462Z               "line": 1445
2026-06-21T23:05:53.0199595Z             },
2026-06-21T23:05:53.0199725Z             {
2026-06-21T23:05:53.0199900Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0200030Z               "line": 1478
2026-06-21T23:05:53.0200157Z             },
2026-06-21T23:05:53.0200285Z             {
2026-06-21T23:05:53.0200453Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0200701Z               "line": 988
2026-06-21T23:05:53.0200919Z             }
2026-06-21T23:05:53.0201049Z           ]
2026-06-21T23:05:53.0201172Z         }
2026-06-21T23:05:53.0201302Z       }
2026-06-21T23:05:53.0201430Z     },
2026-06-21T23:05:53.0201558Z     {
2026-06-21T23:05:53.0201697Z       "id": "REQ-MANIFEST-5",
2026-06-21T23:05:53.0204592Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T23:05:53.0204779Z       "requiredStages": [
2026-06-21T23:05:53.0204902Z         "doc",
2026-06-21T23:05:53.0205027Z         "impl",
2026-06-21T23:05:53.0205152Z         "unit"
2026-06-21T23:05:53.0205274Z       ],
2026-06-21T23:05:53.0205402Z       "stages": {
2026-06-21T23:05:53.0205525Z         "doc": {
2026-06-21T23:05:53.0205671Z           "complete": true,
2026-06-21T23:05:53.0205805Z           "evidence": [
2026-06-21T23:05:53.0205919Z             {
2026-06-21T23:05:53.0206067Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0206197Z               "line": 83
2026-06-21T23:05:53.0206324Z             }
2026-06-21T23:05:53.0206454Z           ]
2026-06-21T23:05:53.0206582Z         },
2026-06-21T23:05:53.0206716Z         "impl": {
2026-06-21T23:05:53.0206854Z           "complete": true,
2026-06-21T23:05:53.0206992Z           "evidence": [
2026-06-21T23:05:53.0207112Z             {
2026-06-21T23:05:53.0207297Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0207427Z               "line": 120
2026-06-21T23:05:53.0207555Z             }
2026-06-21T23:05:53.0207680Z           ]
2026-06-21T23:05:53.0207803Z         },
2026-06-21T23:05:53.0207935Z         "int": {
2026-06-21T23:05:53.0208064Z           "complete": false,
2026-06-21T23:05:53.0208205Z           "evidence": []
2026-06-21T23:05:53.0208324Z         },
2026-06-21T23:05:53.0208449Z         "unit": {
2026-06-21T23:05:53.0208581Z           "complete": true,
2026-06-21T23:05:53.0208721Z           "evidence": [
2026-06-21T23:05:53.0208844Z             {
2026-06-21T23:05:53.0209082Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:05:53.0209220Z               "line": 404
2026-06-21T23:05:53.0209345Z             },
2026-06-21T23:05:53.0209483Z             {
2026-06-21T23:05:53.0209655Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0209793Z               "line": 1155
2026-06-21T23:05:53.0209923Z             },
2026-06-21T23:05:53.0210046Z             {
2026-06-21T23:05:53.0210223Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0210355Z               "line": 1184
2026-06-21T23:05:53.0210484Z             },
2026-06-21T23:05:53.0210614Z             {
2026-06-21T23:05:53.0210788Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0210922Z               "line": 1224
2026-06-21T23:05:53.0211051Z             },
2026-06-21T23:05:53.0211169Z             {
2026-06-21T23:05:53.0211333Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0211470Z               "line": 1239
2026-06-21T23:05:53.0211713Z             }
2026-06-21T23:05:53.0211828Z           ]
2026-06-21T23:05:53.0211961Z         }
2026-06-21T23:05:53.0212085Z       }
2026-06-21T23:05:53.0212299Z     },
2026-06-21T23:05:53.0212424Z     {
2026-06-21T23:05:53.0212563Z       "id": "REQ-MANIFEST-6",
2026-06-21T23:05:53.0214753Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T23:05:53.0214923Z       "requiredStages": [
2026-06-21T23:05:53.0215054Z         "doc",
2026-06-21T23:05:53.0215176Z         "unit"
2026-06-21T23:05:53.0215310Z       ],
2026-06-21T23:05:53.0215435Z       "stages": {
2026-06-21T23:05:53.0215563Z         "doc": {
2026-06-21T23:05:53.0215698Z           "complete": true,
2026-06-21T23:05:53.0215839Z           "evidence": [
2026-06-21T23:05:53.0215962Z             {
2026-06-21T23:05:53.0216113Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0216250Z               "line": 141
2026-06-21T23:05:53.0216375Z             }
2026-06-21T23:05:53.0216503Z           ]
2026-06-21T23:05:53.0216632Z         },
2026-06-21T23:05:53.0216762Z         "impl": {
2026-06-21T23:05:53.0216903Z           "complete": false,
2026-06-21T23:05:53.0217038Z           "evidence": []
2026-06-21T23:05:53.0217161Z         },
2026-06-21T23:05:53.0217296Z         "int": {
2026-06-21T23:05:53.0217434Z           "complete": false,
2026-06-21T23:05:53.0217567Z           "evidence": []
2026-06-21T23:05:53.0217705Z         },
2026-06-21T23:05:53.0217834Z         "unit": {
2026-06-21T23:05:53.0217978Z           "complete": true,
2026-06-21T23:05:53.0218115Z           "evidence": [
2026-06-21T23:05:53.0218240Z             {
2026-06-21T23:05:53.0218424Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.0218552Z               "line": 1261
2026-06-21T23:05:53.0218685Z             }
2026-06-21T23:05:53.0218807Z           ]
2026-06-21T23:05:53.0218937Z         }
2026-06-21T23:05:53.0219131Z       }
2026-06-21T23:05:53.0219257Z     },
2026-06-21T23:05:53.0219380Z     {
2026-06-21T23:05:53.0219539Z       "id": "REQ-MANIFEST-7",
2026-06-21T23:05:53.0222584Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T23:05:53.0222770Z       "requiredStages": [
2026-06-21T23:05:53.0222894Z         "doc",
2026-06-21T23:05:53.0223018Z         "impl",
2026-06-21T23:05:53.0223151Z         "unit"
2026-06-21T23:05:53.0223270Z       ],
2026-06-21T23:05:53.0223400Z       "stages": {
2026-06-21T23:05:53.0223527Z         "doc": {
2026-06-21T23:05:53.0223670Z           "complete": true,
2026-06-21T23:05:53.0223915Z           "evidence": [
2026-06-21T23:05:53.0224049Z             {
2026-06-21T23:05:53.0224201Z               "path": "docs/MANIFEST.md",
2026-06-21T23:05:53.0224435Z               "line": 35
2026-06-21T23:05:53.0224568Z             }
2026-06-21T23:05:53.0224693Z           ]
2026-06-21T23:05:53.0224826Z         },
2026-06-21T23:05:53.0224956Z         "impl": {
2026-06-21T23:05:53.0225103Z           "complete": true,
2026-06-21T23:05:53.0225240Z           "evidence": [
2026-06-21T23:05:53.0225365Z             {
2026-06-21T23:05:53.0225531Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:05:53.0225666Z               "line": 54
2026-06-21T23:05:53.0225799Z             }
2026-06-21T23:05:53.0225924Z           ]
2026-06-21T23:05:53.0226056Z         },
2026-06-21T23:05:53.0226181Z         "int": {
2026-06-21T23:05:53.0226315Z           "complete": false,
2026-06-21T23:05:53.0226451Z           "evidence": []
2026-06-21T23:05:53.0226570Z         },
2026-06-21T23:05:53.0226711Z         "unit": {
2026-06-21T23:05:53.0226854Z           "complete": true,
2026-06-21T23:05:53.0226993Z           "evidence": [
2026-06-21T23:05:53.0227125Z             {
2026-06-21T23:05:53.0227302Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0227445Z               "line": 1638
2026-06-21T23:05:53.0227570Z             }
2026-06-21T23:05:53.0227698Z           ]
2026-06-21T23:05:53.0227817Z         }
2026-06-21T23:05:53.0227945Z       }
2026-06-21T23:05:53.0228074Z     },
2026-06-21T23:05:53.0228190Z     {
2026-06-21T23:05:53.0228341Z       "id": "REQ-MANIFEST-8",
2026-06-21T23:05:53.0230641Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T23:05:53.0230832Z       "requiredStages": [
2026-06-21T23:05:53.0230956Z         "doc",
2026-06-21T23:05:53.0231086Z         "impl",
2026-06-21T23:05:53.0231213Z         "unit",
2026-06-21T23:05:53.0231343Z         "int"
2026-06-21T23:05:53.0231466Z       ],
2026-06-21T23:05:53.0231595Z       "stages": {
2026-06-21T23:05:53.0231716Z         "doc": {
2026-06-21T23:05:53.0231866Z           "complete": true,
2026-06-21T23:05:53.0231999Z           "evidence": [
2026-06-21T23:05:53.0232133Z             {
2026-06-21T23:05:53.0232280Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0232415Z               "line": 184
2026-06-21T23:05:53.0232542Z             },
2026-06-21T23:05:53.0232667Z             {
2026-06-21T23:05:53.0232815Z               "path": "docs/MANIFEST.md",
2026-06-21T23:05:53.0232948Z               "line": 46
2026-06-21T23:05:53.0233073Z             }
2026-06-21T23:05:53.0233195Z           ]
2026-06-21T23:05:53.0233316Z         },
2026-06-21T23:05:53.0233449Z         "impl": {
2026-06-21T23:05:53.0233588Z           "complete": true,
2026-06-21T23:05:53.0233721Z           "evidence": [
2026-06-21T23:05:53.0233849Z             {
2026-06-21T23:05:53.0234030Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.0234177Z               "line": 222
2026-06-21T23:05:53.0234301Z             },
2026-06-21T23:05:53.0234437Z             {
2026-06-21T23:05:53.0234604Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:05:53.0234742Z               "line": 306
2026-06-21T23:05:53.0234861Z             }
2026-06-21T23:05:53.0234972Z           ]
2026-06-21T23:05:53.0235099Z         },
2026-06-21T23:05:53.0235225Z         "int": {
2026-06-21T23:05:53.0235501Z           "complete": true,
2026-06-21T23:05:53.0235625Z           "evidence": [
2026-06-21T23:05:53.0235748Z             {
2026-06-21T23:05:53.0236025Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T23:05:53.0236160Z               "line": 18
2026-06-21T23:05:53.0236292Z             }
2026-06-21T23:05:53.0236416Z           ]
2026-06-21T23:05:53.0236546Z         },
2026-06-21T23:05:53.0236659Z         "unit": {
2026-06-21T23:05:53.0236808Z           "complete": true,
2026-06-21T23:05:53.0236945Z           "evidence": [
2026-06-21T23:05:53.0237072Z             {
2026-06-21T23:05:53.0237253Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0237385Z               "line": 1656
2026-06-21T23:05:53.0237515Z             },
2026-06-21T23:05:53.0237637Z             {
2026-06-21T23:05:53.0237811Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.0237952Z               "line": 316
2026-06-21T23:05:53.0238077Z             },
2026-06-21T23:05:53.0238216Z             {
2026-06-21T23:05:53.0238387Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.0238529Z               "line": 332
2026-06-21T23:05:53.0238659Z             },
2026-06-21T23:05:53.0238783Z             {
2026-06-21T23:05:53.0239032Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.0239164Z               "line": 345
2026-06-21T23:05:53.0239293Z             },
2026-06-21T23:05:53.0239423Z             {
2026-06-21T23:05:53.0239587Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:05:53.0239726Z               "line": 422
2026-06-21T23:05:53.0239852Z             },
2026-06-21T23:05:53.0239976Z             {
2026-06-21T23:05:53.0240134Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:05:53.0240271Z               "line": 436
2026-06-21T23:05:53.0240401Z             }
2026-06-21T23:05:53.0240529Z           ]
2026-06-21T23:05:53.0240654Z         }
2026-06-21T23:05:53.0240782Z       }
2026-06-21T23:05:53.0240910Z     },
2026-06-21T23:05:53.0241035Z     {
2026-06-21T23:05:53.0241177Z       "id": "REQ-MESH-1",
2026-06-21T23:05:53.0243308Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T23:05:53.0243475Z       "requiredStages": [
2026-06-21T23:05:53.0243609Z         "impl",
2026-06-21T23:05:53.0243737Z         "unit",
2026-06-21T23:05:53.0243867Z         "int"
2026-06-21T23:05:53.0243990Z       ],
2026-06-21T23:05:53.0244129Z       "stages": {
2026-06-21T23:05:53.0244267Z         "doc": {
2026-06-21T23:05:53.0244409Z           "complete": false,
2026-06-21T23:05:53.0244548Z           "evidence": []
2026-06-21T23:05:53.0244675Z         },
2026-06-21T23:05:53.0244809Z         "impl": {
2026-06-21T23:05:53.0244941Z           "complete": true,
2026-06-21T23:05:53.0245083Z           "evidence": [
2026-06-21T23:05:53.0245217Z             {
2026-06-21T23:05:53.0245393Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.0245532Z               "line": 972
2026-06-21T23:05:53.0245660Z             },
2026-06-21T23:05:53.0245789Z             {
2026-06-21T23:05:53.0245965Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0246109Z               "line": 38
2026-06-21T23:05:53.0246242Z             },
2026-06-21T23:05:53.0246366Z             {
2026-06-21T23:05:53.0246547Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0246805Z               "line": 161
2026-06-21T23:05:53.0246938Z             },
2026-06-21T23:05:53.0247167Z             {
2026-06-21T23:05:53.0247349Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0247482Z               "line": 206
2026-06-21T23:05:53.0247609Z             },
2026-06-21T23:05:53.0247738Z             {
2026-06-21T23:05:53.0247912Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0248051Z               "line": 57
2026-06-21T23:05:53.0248175Z             },
2026-06-21T23:05:53.0248308Z             {
2026-06-21T23:05:53.0248503Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0248633Z               "line": 24
2026-06-21T23:05:53.0248771Z             },
2026-06-21T23:05:53.0248889Z             {
2026-06-21T23:05:53.0249143Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0249277Z               "line": 142
2026-06-21T23:05:53.0249400Z             },
2026-06-21T23:05:53.0249524Z             {
2026-06-21T23:05:53.0249705Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0249838Z               "line": 162
2026-06-21T23:05:53.0249964Z             }
2026-06-21T23:05:53.0250086Z           ]
2026-06-21T23:05:53.0250219Z         },
2026-06-21T23:05:53.0250342Z         "int": {
2026-06-21T23:05:53.0250474Z           "complete": true,
2026-06-21T23:05:53.0250608Z           "evidence": [
2026-06-21T23:05:53.0250731Z             {
2026-06-21T23:05:53.0250904Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T23:05:53.0251042Z               "line": 67
2026-06-21T23:05:53.0251165Z             },
2026-06-21T23:05:53.0251290Z             {
2026-06-21T23:05:53.0251475Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T23:05:53.0251609Z               "line": 93
2026-06-21T23:05:53.0251742Z             },
2026-06-21T23:05:53.0251868Z             {
2026-06-21T23:05:53.0252057Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T23:05:53.0252192Z               "line": 117
2026-06-21T23:05:53.0252324Z             },
2026-06-21T23:05:53.0252449Z             {
2026-06-21T23:05:53.0252619Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T23:05:53.0252754Z               "line": 134
2026-06-21T23:05:53.0252869Z             }
2026-06-21T23:05:53.0252996Z           ]
2026-06-21T23:05:53.0253124Z         },
2026-06-21T23:05:53.0253253Z         "unit": {
2026-06-21T23:05:53.0253386Z           "complete": true,
2026-06-21T23:05:53.0253516Z           "evidence": [
2026-06-21T23:05:53.0253644Z             {
2026-06-21T23:05:53.0253816Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0253953Z               "line": 427
2026-06-21T23:05:53.0254073Z             },
2026-06-21T23:05:53.0254197Z             {
2026-06-21T23:05:53.0254384Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0254516Z               "line": 376
2026-06-21T23:05:53.0254650Z             },
2026-06-21T23:05:53.0254770Z             {
2026-06-21T23:05:53.0254955Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0255090Z               "line": 412
2026-06-21T23:05:53.0255217Z             },
2026-06-21T23:05:53.0255340Z             {
2026-06-21T23:05:53.0255515Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0255653Z               "line": 427
2026-06-21T23:05:53.0255778Z             },
2026-06-21T23:05:53.0255910Z             {
2026-06-21T23:05:53.0256092Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0256229Z               "line": 438
2026-06-21T23:05:53.0256364Z             },
2026-06-21T23:05:53.0256492Z             {
2026-06-21T23:05:53.0256674Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0256811Z               "line": 449
2026-06-21T23:05:53.0257045Z             },
2026-06-21T23:05:53.0257179Z             {
2026-06-21T23:05:53.0257351Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0257575Z               "line": 460
2026-06-21T23:05:53.0257703Z             },
2026-06-21T23:05:53.0257837Z             {
2026-06-21T23:05:53.0258009Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0258141Z               "line": 496
2026-06-21T23:05:53.0258274Z             },
2026-06-21T23:05:53.0258406Z             {
2026-06-21T23:05:53.0258587Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0258720Z               "line": 519
2026-06-21T23:05:53.0258858Z             },
2026-06-21T23:05:53.0259049Z             {
2026-06-21T23:05:53.0259226Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0259360Z               "line": 546
2026-06-21T23:05:53.0259497Z             }
2026-06-21T23:05:53.0259631Z           ]
2026-06-21T23:05:53.0259764Z         }
2026-06-21T23:05:53.0259889Z       }
2026-06-21T23:05:53.0260022Z     },
2026-06-21T23:05:53.0260152Z     {
2026-06-21T23:05:53.0260303Z       "id": "REQ-MESH-2",
2026-06-21T23:05:53.0262855Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T23:05:53.0263043Z       "requiredStages": [
2026-06-21T23:05:53.0263179Z         "impl",
2026-06-21T23:05:53.0263300Z         "unit",
2026-06-21T23:05:53.0263429Z         "int"
2026-06-21T23:05:53.0263560Z       ],
2026-06-21T23:05:53.0263689Z       "stages": {
2026-06-21T23:05:53.0263819Z         "doc": {
2026-06-21T23:05:53.0263946Z           "complete": false,
2026-06-21T23:05:53.0264081Z           "evidence": []
2026-06-21T23:05:53.0264199Z         },
2026-06-21T23:05:53.0264329Z         "impl": {
2026-06-21T23:05:53.0264462Z           "complete": true,
2026-06-21T23:05:53.0264585Z           "evidence": [
2026-06-21T23:05:53.0264715Z             {
2026-06-21T23:05:53.0264891Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.0265034Z               "line": 807
2026-06-21T23:05:53.0265162Z             },
2026-06-21T23:05:53.0265288Z             {
2026-06-21T23:05:53.0265472Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.0265597Z               "line": 118
2026-06-21T23:05:53.0265734Z             },
2026-06-21T23:05:53.0265848Z             {
2026-06-21T23:05:53.0266023Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.0266155Z               "line": 347
2026-06-21T23:05:53.0266290Z             },
2026-06-21T23:05:53.0266408Z             {
2026-06-21T23:05:53.0266580Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.0266713Z               "line": 389
2026-06-21T23:05:53.0266842Z             },
2026-06-21T23:05:53.0266976Z             {
2026-06-21T23:05:53.0267133Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.0267286Z               "line": 403
2026-06-21T23:05:53.0267414Z             },
2026-06-21T23:05:53.0267530Z             {
2026-06-21T23:05:53.0267705Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.0267835Z               "line": 492
2026-06-21T23:05:53.0268063Z             },
2026-06-21T23:05:53.0268193Z             {
2026-06-21T23:05:53.0268368Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.0268616Z               "line": 507
2026-06-21T23:05:53.0268743Z             },
2026-06-21T23:05:53.0268872Z             {
2026-06-21T23:05:53.0269109Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.0269252Z               "line": 534
2026-06-21T23:05:53.0269370Z             },
2026-06-21T23:05:53.0269496Z             {
2026-06-21T23:05:53.0269685Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0269815Z               "line": 207
2026-06-21T23:05:53.0269938Z             },
2026-06-21T23:05:53.0270062Z             {
2026-06-21T23:05:53.0270239Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0270377Z               "line": 755
2026-06-21T23:05:53.0270511Z             },
2026-06-21T23:05:53.0270639Z             {
2026-06-21T23:05:53.0270807Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0270940Z               "line": 816
2026-06-21T23:05:53.0271074Z             },
2026-06-21T23:05:53.0271206Z             {
2026-06-21T23:05:53.0271382Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0271523Z               "line": 869
2026-06-21T23:05:53.0271656Z             },
2026-06-21T23:05:53.0271776Z             {
2026-06-21T23:05:53.0271952Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0272086Z               "line": 891
2026-06-21T23:05:53.0272204Z             },
2026-06-21T23:05:53.0276537Z             {
2026-06-21T23:05:53.0276748Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:53.0276898Z               "line": 122
2026-06-21T23:05:53.0277021Z             },
2026-06-21T23:05:53.0277150Z             {
2026-06-21T23:05:53.0277321Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0277480Z               "line": 44
2026-06-21T23:05:53.0277612Z             },
2026-06-21T23:05:53.0277742Z             {
2026-06-21T23:05:53.0277918Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0278051Z               "line": 184
2026-06-21T23:05:53.0278184Z             },
2026-06-21T23:05:53.0278313Z             {
2026-06-21T23:05:53.0278471Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0278618Z               "line": 211
2026-06-21T23:05:53.0278739Z             },
2026-06-21T23:05:53.0278861Z             {
2026-06-21T23:05:53.0279110Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0279242Z               "line": 251
2026-06-21T23:05:53.0279371Z             },
2026-06-21T23:05:53.0279507Z             {
2026-06-21T23:05:53.0279678Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0279817Z               "line": 275
2026-06-21T23:05:53.0279945Z             },
2026-06-21T23:05:53.0280065Z             {
2026-06-21T23:05:53.0280245Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0280375Z               "line": 289
2026-06-21T23:05:53.0280508Z             },
2026-06-21T23:05:53.0280637Z             {
2026-06-21T23:05:53.0280804Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0280938Z               "line": 300
2026-06-21T23:05:53.0281061Z             },
2026-06-21T23:05:53.0281190Z             {
2026-06-21T23:05:53.0281343Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0281481Z               "line": 313
2026-06-21T23:05:53.0281606Z             }
2026-06-21T23:05:53.0281729Z           ]
2026-06-21T23:05:53.0281856Z         },
2026-06-21T23:05:53.0281985Z         "int": {
2026-06-21T23:05:53.0282130Z           "complete": true,
2026-06-21T23:05:53.0282265Z           "evidence": [
2026-06-21T23:05:53.0282393Z             {
2026-06-21T23:05:53.0282589Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T23:05:53.0282890Z               "line": 116
2026-06-21T23:05:53.0283013Z             },
2026-06-21T23:05:53.0283136Z             {
2026-06-21T23:05:53.0283413Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T23:05:53.0283548Z               "line": 181
2026-06-21T23:05:53.0283676Z             }
2026-06-21T23:05:53.0283805Z           ]
2026-06-21T23:05:53.0283933Z         },
2026-06-21T23:05:53.0284062Z         "unit": {
2026-06-21T23:05:53.0284192Z           "complete": true,
2026-06-21T23:05:53.0284328Z           "evidence": [
2026-06-21T23:05:53.0284454Z             {
2026-06-21T23:05:53.0284638Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0284781Z               "line": 999
2026-06-21T23:05:53.0284896Z             },
2026-06-21T23:05:53.0285028Z             {
2026-06-21T23:05:53.0285197Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0285338Z               "line": 1016
2026-06-21T23:05:53.0285468Z             },
2026-06-21T23:05:53.0285597Z             {
2026-06-21T23:05:53.0285769Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0285911Z               "line": 1024
2026-06-21T23:05:53.0286035Z             },
2026-06-21T23:05:53.0286160Z             {
2026-06-21T23:05:53.0286340Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0286474Z               "line": 1048
2026-06-21T23:05:53.0286602Z             },
2026-06-21T23:05:53.0286727Z             {
2026-06-21T23:05:53.0286906Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0287040Z               "line": 1499
2026-06-21T23:05:53.0287163Z             },
2026-06-21T23:05:53.0287295Z             {
2026-06-21T23:05:53.0287468Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0287600Z               "line": 347
2026-06-21T23:05:53.0287730Z             },
2026-06-21T23:05:53.0287857Z             {
2026-06-21T23:05:53.0288026Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0288163Z               "line": 370
2026-06-21T23:05:53.0288292Z             },
2026-06-21T23:05:53.0288425Z             {
2026-06-21T23:05:53.0288587Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0288721Z               "line": 407
2026-06-21T23:05:53.0288844Z             },
2026-06-21T23:05:53.0289041Z             {
2026-06-21T23:05:53.0289197Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0289337Z               "line": 431
2026-06-21T23:05:53.0289460Z             },
2026-06-21T23:05:53.0289580Z             {
2026-06-21T23:05:53.0289740Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0289863Z               "line": 483
2026-06-21T23:05:53.0289988Z             },
2026-06-21T23:05:53.0290115Z             {
2026-06-21T23:05:53.0290277Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0290415Z               "line": 499
2026-06-21T23:05:53.0290539Z             },
2026-06-21T23:05:53.0290668Z             {
2026-06-21T23:05:53.0290824Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0290963Z               "line": 514
2026-06-21T23:05:53.0291087Z             },
2026-06-21T23:05:53.0291217Z             {
2026-06-21T23:05:53.0291369Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0291507Z               "line": 531
2026-06-21T23:05:53.0291635Z             }
2026-06-21T23:05:53.0291760Z           ]
2026-06-21T23:05:53.0291880Z         }
2026-06-21T23:05:53.0292007Z       }
2026-06-21T23:05:53.0292137Z     },
2026-06-21T23:05:53.0292261Z     {
2026-06-21T23:05:53.0292397Z       "id": "REQ-MESH-3",
2026-06-21T23:05:53.0294146Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T23:05:53.0294503Z       "requiredStages": [
2026-06-21T23:05:53.0294631Z         "impl",
2026-06-21T23:05:53.0294761Z         "unit",
2026-06-21T23:05:53.0294884Z         "int"
2026-06-21T23:05:53.0295014Z       ],
2026-06-21T23:05:53.0295147Z       "stages": {
2026-06-21T23:05:53.0295274Z         "doc": {
2026-06-21T23:05:53.0295418Z           "complete": false,
2026-06-21T23:05:53.0295551Z           "evidence": []
2026-06-21T23:05:53.0295670Z         },
2026-06-21T23:05:53.0295794Z         "impl": {
2026-06-21T23:05:53.0295927Z           "complete": true,
2026-06-21T23:05:53.0296057Z           "evidence": [
2026-06-21T23:05:53.0296190Z             {
2026-06-21T23:05:53.0296367Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:53.0296519Z               "line": 641
2026-06-21T23:05:53.0296639Z             }
2026-06-21T23:05:53.0296762Z           ]
2026-06-21T23:05:53.0296890Z         },
2026-06-21T23:05:53.0297020Z         "int": {
2026-06-21T23:05:53.0297163Z           "complete": true,
2026-06-21T23:05:53.0297302Z           "evidence": [
2026-06-21T23:05:53.0297424Z             {
2026-06-21T23:05:53.0297600Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T23:05:53.0297732Z               "line": 373
2026-06-21T23:05:53.0297860Z             },
2026-06-21T23:05:53.0297985Z             {
2026-06-21T23:05:53.0298155Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T23:05:53.0298300Z               "line": 436
2026-06-21T23:05:53.0298418Z             }
2026-06-21T23:05:53.0298547Z           ]
2026-06-21T23:05:53.0298671Z         },
2026-06-21T23:05:53.0298794Z         "unit": {
2026-06-21T23:05:53.0298934Z           "complete": true,
2026-06-21T23:05:53.0299157Z           "evidence": [
2026-06-21T23:05:53.0299286Z             {
2026-06-21T23:05:53.0299472Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:53.0299620Z               "line": 910
2026-06-21T23:05:53.0299733Z             }
2026-06-21T23:05:53.0299864Z           ]
2026-06-21T23:05:53.0299991Z         }
2026-06-21T23:05:53.0300121Z       }
2026-06-21T23:05:53.0300245Z     },
2026-06-21T23:05:53.0300367Z     {
2026-06-21T23:05:53.0300496Z       "id": "REQ-MESH-4",
2026-06-21T23:05:53.0302707Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T23:05:53.0302887Z       "requiredStages": [
2026-06-21T23:05:53.0303020Z         "impl",
2026-06-21T23:05:53.0303147Z         "unit",
2026-06-21T23:05:53.0303274Z         "int"
2026-06-21T23:05:53.0303399Z       ],
2026-06-21T23:05:53.0303523Z       "stages": {
2026-06-21T23:05:53.0303647Z         "doc": {
2026-06-21T23:05:53.0303776Z           "complete": false,
2026-06-21T23:05:53.0303909Z           "evidence": []
2026-06-21T23:05:53.0304034Z         },
2026-06-21T23:05:53.0304157Z         "impl": {
2026-06-21T23:05:53.0304291Z           "complete": true,
2026-06-21T23:05:53.0304419Z           "evidence": [
2026-06-21T23:05:53.0304553Z             {
2026-06-21T23:05:53.0304729Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:05:53.0304969Z               "line": 33
2026-06-21T23:05:53.0305091Z             },
2026-06-21T23:05:53.0305215Z             {
2026-06-21T23:05:53.0305483Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0305613Z               "line": 68
2026-06-21T23:05:53.0305739Z             },
2026-06-21T23:05:53.0305862Z             {
2026-06-21T23:05:53.0306031Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0306158Z               "line": 111
2026-06-21T23:05:53.0306288Z             },
2026-06-21T23:05:53.0306416Z             {
2026-06-21T23:05:53.0306588Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0306726Z               "line": 462
2026-06-21T23:05:53.0306845Z             },
2026-06-21T23:05:53.0306970Z             {
2026-06-21T23:05:53.0307140Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0307275Z               "line": 711
2026-06-21T23:05:53.0307398Z             },
2026-06-21T23:05:53.0307529Z             {
2026-06-21T23:05:53.0307703Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0307838Z               "line": 725
2026-06-21T23:05:53.0307956Z             },
2026-06-21T23:05:53.0308079Z             {
2026-06-21T23:05:53.0308246Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:53.0308377Z               "line": 132
2026-06-21T23:05:53.0308501Z             },
2026-06-21T23:05:53.0308630Z             {
2026-06-21T23:05:53.0308797Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:05:53.0308926Z               "line": 26
2026-06-21T23:05:53.0309136Z             },
2026-06-21T23:05:53.0309265Z             {
2026-06-21T23:05:53.0309437Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:05:53.0309574Z               "line": 97
2026-06-21T23:05:53.0309703Z             },
2026-06-21T23:05:53.0309828Z             {
2026-06-21T23:05:53.0309993Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:05:53.0310133Z               "line": 119
2026-06-21T23:05:53.0310261Z             },
2026-06-21T23:05:53.0310391Z             {
2026-06-21T23:05:53.0310556Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:53.0310676Z               "line": 82
2026-06-21T23:05:53.0310805Z             },
2026-06-21T23:05:53.0310932Z             {
2026-06-21T23:05:53.0311094Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:53.0311225Z               "line": 111
2026-06-21T23:05:53.0311354Z             },
2026-06-21T23:05:53.0311474Z             {
2026-06-21T23:05:53.0311639Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:53.0311764Z               "line": 232
2026-06-21T23:05:53.0311887Z             },
2026-06-21T23:05:53.0312013Z             {
2026-06-21T23:05:53.0312184Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:53.0312313Z               "line": 245
2026-06-21T23:05:53.0312441Z             },
2026-06-21T23:05:53.0312570Z             {
2026-06-21T23:05:53.0312719Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0312856Z               "line": 4665
2026-06-21T23:05:53.0312976Z             }
2026-06-21T23:05:53.0313089Z           ]
2026-06-21T23:05:53.0313219Z         },
2026-06-21T23:05:53.0313348Z         "int": {
2026-06-21T23:05:53.0313485Z           "complete": true,
2026-06-21T23:05:53.0313618Z           "evidence": [
2026-06-21T23:05:53.0313745Z             {
2026-06-21T23:05:53.0313916Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T23:05:53.0314055Z               "line": 98
2026-06-21T23:05:53.0314187Z             },
2026-06-21T23:05:53.0314312Z             {
2026-06-21T23:05:53.0314488Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T23:05:53.0314618Z               "line": 140
2026-06-21T23:05:53.0314750Z             }
2026-06-21T23:05:53.0314880Z           ]
2026-06-21T23:05:53.0314998Z         },
2026-06-21T23:05:53.0315122Z         "unit": {
2026-06-21T23:05:53.0315375Z           "complete": true,
2026-06-21T23:05:53.0315509Z           "evidence": [
2026-06-21T23:05:53.0315742Z             {
2026-06-21T23:05:53.0315928Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:05:53.0316067Z               "line": 178
2026-06-21T23:05:53.0316192Z             },
2026-06-21T23:05:53.0316318Z             {
2026-06-21T23:05:53.0316485Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:05:53.0316624Z               "line": 242
2026-06-21T23:05:53.0316747Z             },
2026-06-21T23:05:53.0316877Z             {
2026-06-21T23:05:53.0317047Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0317187Z               "line": 1079
2026-06-21T23:05:53.0317305Z             },
2026-06-21T23:05:53.0317429Z             {
2026-06-21T23:05:53.0317596Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0317735Z               "line": 1109
2026-06-21T23:05:53.0317868Z             },
2026-06-21T23:05:53.0317997Z             {
2026-06-21T23:05:53.0318169Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:05:53.0318307Z               "line": 1129
2026-06-21T23:05:53.0318437Z             },
2026-06-21T23:05:53.0318564Z             {
2026-06-21T23:05:53.0318749Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:05:53.0318890Z               "line": 602
2026-06-21T23:05:53.0319090Z             },
2026-06-21T23:05:53.0319209Z             {
2026-06-21T23:05:53.0319391Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:05:53.0319524Z               "line": 148
2026-06-21T23:05:53.0319652Z             },
2026-06-21T23:05:53.0319782Z             {
2026-06-21T23:05:53.0319953Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:05:53.0320092Z               "line": 169
2026-06-21T23:05:53.0320220Z             },
2026-06-21T23:05:53.0320345Z             {
2026-06-21T23:05:53.0320511Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:05:53.0320651Z               "line": 181
2026-06-21T23:05:53.0320773Z             },
2026-06-21T23:05:53.0320907Z             {
2026-06-21T23:05:53.0321069Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:05:53.0321197Z               "line": 202
2026-06-21T23:05:53.0321323Z             },
2026-06-21T23:05:53.0321445Z             {
2026-06-21T23:05:53.0321616Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:53.0321757Z               "line": 375
2026-06-21T23:05:53.0321880Z             },
2026-06-21T23:05:53.0322010Z             {
2026-06-21T23:05:53.0322162Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:53.0322292Z               "line": 407
2026-06-21T23:05:53.0322410Z             },
2026-06-21T23:05:53.0322539Z             {
2026-06-21T23:05:53.0322692Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0322830Z               "line": 10052
2026-06-21T23:05:53.0322959Z             }
2026-06-21T23:05:53.0323082Z           ]
2026-06-21T23:05:53.0323217Z         }
2026-06-21T23:05:53.0323349Z       }
2026-06-21T23:05:53.0323483Z     },
2026-06-21T23:05:53.0323599Z     {
2026-06-21T23:05:53.0323740Z       "id": "REQ-MESH-5",
2026-06-21T23:05:53.0325159Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T23:05:53.0325319Z       "requiredStages": [
2026-06-21T23:05:53.0325450Z         "impl",
2026-06-21T23:05:53.0325587Z         "unit"
2026-06-21T23:05:53.0325711Z       ],
2026-06-21T23:05:53.0325845Z       "stages": {
2026-06-21T23:05:53.0326084Z         "doc": {
2026-06-21T23:05:53.0326230Z           "complete": false,
2026-06-21T23:05:53.0326466Z           "evidence": []
2026-06-21T23:05:53.0326598Z         },
2026-06-21T23:05:53.0326733Z         "impl": {
2026-06-21T23:05:53.0326873Z           "complete": true,
2026-06-21T23:05:53.0327012Z           "evidence": [
2026-06-21T23:05:53.0327127Z             {
2026-06-21T23:05:53.0327297Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:05:53.0327422Z               "line": 61
2026-06-21T23:05:53.0327550Z             },
2026-06-21T23:05:53.0327680Z             {
2026-06-21T23:05:53.0327856Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:05:53.0327994Z               "line": 109
2026-06-21T23:05:53.0328128Z             },
2026-06-21T23:05:53.0328247Z             {
2026-06-21T23:05:53.0328423Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.0328566Z               "line": 104
2026-06-21T23:05:53.0328705Z             },
2026-06-21T23:05:53.0328828Z             {
2026-06-21T23:05:53.0329105Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.0329247Z               "line": 105
2026-06-21T23:05:53.0329380Z             },
2026-06-21T23:05:53.0329511Z             {
2026-06-21T23:05:53.0329699Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0329835Z               "line": 85
2026-06-21T23:05:53.0329960Z             },
2026-06-21T23:05:53.0330089Z             {
2026-06-21T23:05:53.0330271Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0330408Z               "line": 250
2026-06-21T23:05:53.0330532Z             },
2026-06-21T23:05:53.0330666Z             {
2026-06-21T23:05:53.0330847Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0330980Z               "line": 314
2026-06-21T23:05:53.0331109Z             },
2026-06-21T23:05:53.0331230Z             {
2026-06-21T23:05:53.0331419Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0331563Z               "line": 767
2026-06-21T23:05:53.0331695Z             },
2026-06-21T23:05:53.0331830Z             {
2026-06-21T23:05:53.0331986Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:53.0332109Z               "line": 101
2026-06-21T23:05:53.0332233Z             },
2026-06-21T23:05:53.0332364Z             {
2026-06-21T23:05:53.0332537Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0332670Z               "line": 193
2026-06-21T23:05:53.0332794Z             }
2026-06-21T23:05:53.0332923Z           ]
2026-06-21T23:05:53.0333055Z         },
2026-06-21T23:05:53.0333186Z         "int": {
2026-06-21T23:05:53.0333323Z           "complete": false,
2026-06-21T23:05:53.0333457Z           "evidence": []
2026-06-21T23:05:53.0333585Z         },
2026-06-21T23:05:53.0333719Z         "unit": {
2026-06-21T23:05:53.0333858Z           "complete": true,
2026-06-21T23:05:53.0334000Z           "evidence": [
2026-06-21T23:05:53.0334125Z             {
2026-06-21T23:05:53.0334310Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0334464Z               "line": 1009
2026-06-21T23:05:53.0334585Z             },
2026-06-21T23:05:53.0334710Z             {
2026-06-21T23:05:53.0334870Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:05:53.0335007Z               "line": 462
2026-06-21T23:05:53.0335132Z             }
2026-06-21T23:05:53.0335265Z           ]
2026-06-21T23:05:53.0335395Z         }
2026-06-21T23:05:53.0335523Z       }
2026-06-21T23:05:53.0335651Z     },
2026-06-21T23:05:53.0335776Z     {
2026-06-21T23:05:53.0335923Z       "id": "REQ-MESH-6",
2026-06-21T23:05:53.0337201Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T23:05:53.0337562Z       "requiredStages": [
2026-06-21T23:05:53.0337682Z         "impl",
2026-06-21T23:05:53.0337815Z         "unit"
2026-06-21T23:05:53.0337939Z       ],
2026-06-21T23:05:53.0338068Z       "stages": {
2026-06-21T23:05:53.0338191Z         "doc": {
2026-06-21T23:05:53.0338340Z           "complete": false,
2026-06-21T23:05:53.0338473Z           "evidence": []
2026-06-21T23:05:53.0338603Z         },
2026-06-21T23:05:53.0338726Z         "impl": {
2026-06-21T23:05:53.0338874Z           "complete": true,
2026-06-21T23:05:53.0339078Z           "evidence": [
2026-06-21T23:05:53.0339209Z             {
2026-06-21T23:05:53.0339379Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0339523Z               "line": 4181
2026-06-21T23:05:53.0339655Z             }
2026-06-21T23:05:53.0339774Z           ]
2026-06-21T23:05:53.0339907Z         },
2026-06-21T23:05:53.0340034Z         "int": {
2026-06-21T23:05:53.0340177Z           "complete": false,
2026-06-21T23:05:53.0340329Z           "evidence": []
2026-06-21T23:05:53.0340449Z         },
2026-06-21T23:05:53.0340578Z         "unit": {
2026-06-21T23:05:53.0340720Z           "complete": true,
2026-06-21T23:05:53.0340850Z           "evidence": [
2026-06-21T23:05:53.0340963Z             {
2026-06-21T23:05:53.0341117Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0341264Z               "line": 10602
2026-06-21T23:05:53.0341388Z             },
2026-06-21T23:05:53.0341517Z             {
2026-06-21T23:05:53.0341665Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0341809Z               "line": 10629
2026-06-21T23:05:53.0341936Z             },
2026-06-21T23:05:53.0342061Z             {
2026-06-21T23:05:53.0342217Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0342352Z               "line": 10653
2026-06-21T23:05:53.0342485Z             }
2026-06-21T23:05:53.0342612Z           ]
2026-06-21T23:05:53.0342741Z         }
2026-06-21T23:05:53.0342858Z       }
2026-06-21T23:05:53.0342996Z     },
2026-06-21T23:05:53.0343126Z     {
2026-06-21T23:05:53.0343268Z       "id": "REQ-MIGRATE-1",
2026-06-21T23:05:53.0343488Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T23:05:53.0343635Z       "requiredStages": [],
2026-06-21T23:05:53.0343755Z       "stages": {
2026-06-21T23:05:53.0343878Z         "doc": {
2026-06-21T23:05:53.0344018Z           "complete": false,
2026-06-21T23:05:53.0344150Z           "evidence": []
2026-06-21T23:05:53.0344269Z         },
2026-06-21T23:05:53.0344404Z         "impl": {
2026-06-21T23:05:53.0344541Z           "complete": false,
2026-06-21T23:05:53.0344680Z           "evidence": []
2026-06-21T23:05:53.0344808Z         },
2026-06-21T23:05:53.0344943Z         "int": {
2026-06-21T23:05:53.0345090Z           "complete": false,
2026-06-21T23:05:53.0345222Z           "evidence": []
2026-06-21T23:05:53.0345346Z         },
2026-06-21T23:05:53.0345477Z         "unit": {
2026-06-21T23:05:53.0345606Z           "complete": false,
2026-06-21T23:05:53.0345745Z           "evidence": []
2026-06-21T23:05:53.0345873Z         }
2026-06-21T23:05:53.0346003Z       }
2026-06-21T23:05:53.0346116Z     },
2026-06-21T23:05:53.0346246Z     {
2026-06-21T23:05:53.0346379Z       "id": "REQ-MSG-1",
2026-06-21T23:05:53.0346875Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T23:05:53.0347017Z       "requiredStages": [
2026-06-21T23:05:53.0347141Z         "impl",
2026-06-21T23:05:53.0347271Z         "unit",
2026-06-21T23:05:53.0347394Z         "int"
2026-06-21T23:05:53.0347524Z       ],
2026-06-21T23:05:53.0347651Z       "stages": {
2026-06-21T23:05:53.0347781Z         "doc": {
2026-06-21T23:05:53.0347915Z           "complete": false,
2026-06-21T23:05:53.0348056Z           "evidence": []
2026-06-21T23:05:53.0348281Z         },
2026-06-21T23:05:53.0348418Z         "impl": {
2026-06-21T23:05:53.0348652Z           "complete": true,
2026-06-21T23:05:53.0348781Z           "evidence": [
2026-06-21T23:05:53.0348909Z             {
2026-06-21T23:05:53.0349149Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:53.0349277Z               "line": 28
2026-06-21T23:05:53.0349410Z             },
2026-06-21T23:05:53.0349534Z             {
2026-06-21T23:05:53.0349706Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:53.0349835Z               "line": 94
2026-06-21T23:05:53.0349967Z             },
2026-06-21T23:05:53.0350079Z             {
2026-06-21T23:05:53.0350244Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:53.0350377Z               "line": 127
2026-06-21T23:05:53.0350505Z             },
2026-06-21T23:05:53.0350632Z             {
2026-06-21T23:05:53.0350795Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:53.0350942Z               "line": 149
2026-06-21T23:05:53.0351066Z             },
2026-06-21T23:05:53.0351204Z             {
2026-06-21T23:05:53.0351372Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:53.0351510Z               "line": 174
2026-06-21T23:05:53.0351648Z             },
2026-06-21T23:05:53.0351772Z             {
2026-06-21T23:05:53.0351953Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T23:05:53.0352086Z               "line": 18
2026-06-21T23:05:53.0352234Z             },
2026-06-21T23:05:53.0352369Z             {
2026-06-21T23:05:53.0352520Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:05:53.0352650Z               "line": 13
2026-06-21T23:05:53.0352782Z             },
2026-06-21T23:05:53.0370811Z             {
2026-06-21T23:05:53.0371044Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:05:53.0371213Z               "line": 62
2026-06-21T23:05:53.0371378Z             },
2026-06-21T23:05:53.0371526Z             {
2026-06-21T23:05:53.0371752Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:05:53.0371929Z               "line": 13
2026-06-21T23:05:53.0372076Z             }
2026-06-21T23:05:53.0372230Z           ]
2026-06-21T23:05:53.0372372Z         },
2026-06-21T23:05:53.0372526Z         "int": {
2026-06-21T23:05:53.0372696Z           "complete": true,
2026-06-21T23:05:53.0372850Z           "evidence": [
2026-06-21T23:05:53.0372987Z             {
2026-06-21T23:05:53.0373231Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T23:05:53.0373388Z               "line": 9
2026-06-21T23:05:53.0373536Z             },
2026-06-21T23:05:53.0373683Z             {
2026-06-21T23:05:53.0373907Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T23:05:53.0374066Z               "line": 56
2026-06-21T23:05:53.0374217Z             },
2026-06-21T23:05:53.0374369Z             {
2026-06-21T23:05:53.0374591Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T23:05:53.0374758Z               "line": 113
2026-06-21T23:05:53.0374905Z             }
2026-06-21T23:05:53.0375044Z           ]
2026-06-21T23:05:53.0375201Z         },
2026-06-21T23:05:53.0375350Z         "unit": {
2026-06-21T23:05:53.0375521Z           "complete": true,
2026-06-21T23:05:53.0375678Z           "evidence": [
2026-06-21T23:05:53.0375826Z             {
2026-06-21T23:05:53.0376361Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:53.0376527Z               "line": 203
2026-06-21T23:05:53.0376671Z             },
2026-06-21T23:05:53.0376793Z             {
2026-06-21T23:05:53.0376979Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:53.0377110Z               "line": 232
2026-06-21T23:05:53.0377228Z             },
2026-06-21T23:05:53.0377354Z             {
2026-06-21T23:05:53.0377515Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:53.0377649Z               "line": 277
2026-06-21T23:05:53.0377768Z             },
2026-06-21T23:05:53.0378154Z             {
2026-06-21T23:05:53.0378326Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:53.0378580Z               "line": 300
2026-06-21T23:05:53.0378698Z             },
2026-06-21T23:05:53.0378812Z             {
2026-06-21T23:05:53.0379118Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:05:53.0379327Z               "line": 325
2026-06-21T23:05:53.0379456Z             },
2026-06-21T23:05:53.0379581Z             {
2026-06-21T23:05:53.0379755Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T23:05:53.0379889Z               "line": 204
2026-06-21T23:05:53.0380003Z             },
2026-06-21T23:05:53.0380122Z             {
2026-06-21T23:05:53.0380295Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T23:05:53.0380432Z               "line": 237
2026-06-21T23:05:53.0380548Z             },
2026-06-21T23:05:53.0380657Z             {
2026-06-21T23:05:53.0380810Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T23:05:53.0380952Z               "line": 251
2026-06-21T23:05:53.0381081Z             },
2026-06-21T23:05:53.0381210Z             {
2026-06-21T23:05:53.0381362Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T23:05:53.0381487Z               "line": 263
2026-06-21T23:05:53.0381600Z             },
2026-06-21T23:05:53.0381715Z             {
2026-06-21T23:05:53.0381872Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:05:53.0382010Z               "line": 162
2026-06-21T23:05:53.0382124Z             },
2026-06-21T23:05:53.0382241Z             {
2026-06-21T23:05:53.0382403Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:05:53.0382528Z               "line": 242
2026-06-21T23:05:53.0382655Z             },
2026-06-21T23:05:53.0382776Z             {
2026-06-21T23:05:53.0382936Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:05:53.0383071Z               "line": 134
2026-06-21T23:05:53.0383190Z             },
2026-06-21T23:05:53.0383314Z             {
2026-06-21T23:05:53.0383471Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:05:53.0383609Z               "line": 153
2026-06-21T23:05:53.0383715Z             }
2026-06-21T23:05:53.0383844Z           ]
2026-06-21T23:05:53.0383953Z         }
2026-06-21T23:05:53.0384064Z       }
2026-06-21T23:05:53.0384187Z     },
2026-06-21T23:05:53.0384297Z     {
2026-06-21T23:05:53.0384435Z       "id": "REQ-MSG-2",
2026-06-21T23:05:53.0384792Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T23:05:53.0384929Z       "requiredStages": [
2026-06-21T23:05:53.0385057Z         "impl",
2026-06-21T23:05:53.0385179Z         "unit"
2026-06-21T23:05:53.0385294Z       ],
2026-06-21T23:05:53.0385419Z       "stages": {
2026-06-21T23:05:53.0385527Z         "doc": {
2026-06-21T23:05:53.0385634Z           "complete": false,
2026-06-21T23:05:53.0385753Z           "evidence": []
2026-06-21T23:05:53.0385856Z         },
2026-06-21T23:05:53.0385972Z         "impl": {
2026-06-21T23:05:53.0386086Z           "complete": true,
2026-06-21T23:05:53.0386205Z           "evidence": [
2026-06-21T23:05:53.0386311Z             {
2026-06-21T23:05:53.0386438Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0386544Z               "line": 11
2026-06-21T23:05:53.0386653Z             },
2026-06-21T23:05:53.0386748Z             {
2026-06-21T23:05:53.0386873Z               "path": "crates/spt/src/main.rs",
2026-06-21T23:05:53.0386978Z               "line": 8
2026-06-21T23:05:53.0387082Z             }
2026-06-21T23:05:53.0387184Z           ]
2026-06-21T23:05:53.0387293Z         },
2026-06-21T23:05:53.0387401Z         "int": {
2026-06-21T23:05:53.0387510Z           "complete": false,
2026-06-21T23:05:53.0387619Z           "evidence": []
2026-06-21T23:05:53.0387718Z         },
2026-06-21T23:05:53.0387828Z         "unit": {
2026-06-21T23:05:53.0387933Z           "complete": true,
2026-06-21T23:05:53.0388037Z           "evidence": [
2026-06-21T23:05:53.0388252Z             {
2026-06-21T23:05:53.0388385Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0388600Z               "line": 7717
2026-06-21T23:05:53.0388704Z             },
2026-06-21T23:05:53.0388806Z             {
2026-06-21T23:05:53.0388934Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0389120Z               "line": 7759
2026-06-21T23:05:53.0389215Z             },
2026-06-21T23:05:53.0389320Z             {
2026-06-21T23:05:53.0389445Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0389548Z               "line": 7808
2026-06-21T23:05:53.0389644Z             },
2026-06-21T23:05:53.0389741Z             {
2026-06-21T23:05:53.0389863Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0389964Z               "line": 7831
2026-06-21T23:05:53.0390069Z             },
2026-06-21T23:05:53.0390174Z             {
2026-06-21T23:05:53.0390301Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0390411Z               "line": 9807
2026-06-21T23:05:53.0390512Z             },
2026-06-21T23:05:53.0390616Z             {
2026-06-21T23:05:53.0390750Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0390855Z               "line": 9816
2026-06-21T23:05:53.0390959Z             },
2026-06-21T23:05:53.0391056Z             {
2026-06-21T23:05:53.0391179Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0391288Z               "line": 9830
2026-06-21T23:05:53.0391394Z             }
2026-06-21T23:05:53.0391498Z           ]
2026-06-21T23:05:53.0391598Z         }
2026-06-21T23:05:53.0391699Z       }
2026-06-21T23:05:53.0391794Z     },
2026-06-21T23:05:53.0391894Z     {
2026-06-21T23:05:53.0392005Z       "id": "REQ-MSG-3",
2026-06-21T23:05:53.0392414Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T23:05:53.0392531Z       "requiredStages": [
2026-06-21T23:05:53.0392622Z         "impl",
2026-06-21T23:05:53.0396121Z         "unit",
2026-06-21T23:05:53.0396255Z         "int"
2026-06-21T23:05:53.0396364Z       ],
2026-06-21T23:05:53.0396480Z       "stages": {
2026-06-21T23:05:53.0396589Z         "doc": {
2026-06-21T23:05:53.0396717Z           "complete": false,
2026-06-21T23:05:53.0396818Z           "evidence": []
2026-06-21T23:05:53.0396927Z         },
2026-06-21T23:05:53.0397032Z         "impl": {
2026-06-21T23:05:53.0397152Z           "complete": true,
2026-06-21T23:05:53.0397260Z           "evidence": [
2026-06-21T23:05:53.0397366Z             {
2026-06-21T23:05:53.0397520Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T23:05:53.0397633Z               "line": 19
2026-06-21T23:05:53.0397739Z             },
2026-06-21T23:05:53.0397834Z             {
2026-06-21T23:05:53.0397966Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:05:53.0398071Z               "line": 21
2026-06-21T23:05:53.0398170Z             },
2026-06-21T23:05:53.0398273Z             {
2026-06-21T23:05:53.0398407Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:05:53.0398518Z               "line": 48
2026-06-21T23:05:53.0398621Z             },
2026-06-21T23:05:53.0398722Z             {
2026-06-21T23:05:53.0398851Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:05:53.0399037Z               "line": 174
2026-06-21T23:05:53.0399141Z             }
2026-06-21T23:05:53.0399240Z           ]
2026-06-21T23:05:53.0399347Z         },
2026-06-21T23:05:53.0399451Z         "int": {
2026-06-21T23:05:53.0399574Z           "complete": true,
2026-06-21T23:05:53.0399680Z           "evidence": [
2026-06-21T23:05:53.0399785Z             {
2026-06-21T23:05:53.0399956Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T23:05:53.0400062Z               "line": 10
2026-06-21T23:05:53.0400171Z             },
2026-06-21T23:05:53.0400276Z             {
2026-06-21T23:05:53.0400442Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T23:05:53.0400743Z               "line": 56
2026-06-21T23:05:53.0400847Z             }
2026-06-21T23:05:53.0400956Z           ]
2026-06-21T23:05:53.0401143Z         },
2026-06-21T23:05:53.0401252Z         "unit": {
2026-06-21T23:05:53.0401358Z           "complete": true,
2026-06-21T23:05:53.0401471Z           "evidence": [
2026-06-21T23:05:53.0401572Z             {
2026-06-21T23:05:53.0401706Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:05:53.0401819Z               "line": 228
2026-06-21T23:05:53.0401911Z             },
2026-06-21T23:05:53.0402020Z             {
2026-06-21T23:05:53.0402153Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:05:53.0402269Z               "line": 247
2026-06-21T23:05:53.0402368Z             },
2026-06-21T23:05:53.0402463Z             {
2026-06-21T23:05:53.0402608Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:05:53.0402721Z               "line": 270
2026-06-21T23:05:53.0402816Z             }
2026-06-21T23:05:53.0402927Z           ]
2026-06-21T23:05:53.0403035Z         }
2026-06-21T23:05:53.0403135Z       }
2026-06-21T23:05:53.0403245Z     },
2026-06-21T23:05:53.0403352Z     {
2026-06-21T23:05:53.0403461Z       "id": "REQ-MSG-4",
2026-06-21T23:05:53.0404419Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T23:05:53.0404544Z       "requiredStages": [
2026-06-21T23:05:53.0404649Z         "impl",
2026-06-21T23:05:53.0404758Z         "unit",
2026-06-21T23:05:53.0404854Z         "int"
2026-06-21T23:05:53.0404959Z       ],
2026-06-21T23:05:53.0405063Z       "stages": {
2026-06-21T23:05:53.0405169Z         "doc": {
2026-06-21T23:05:53.0405283Z           "complete": false,
2026-06-21T23:05:53.0405393Z           "evidence": []
2026-06-21T23:05:53.0405498Z         },
2026-06-21T23:05:53.0405607Z         "impl": {
2026-06-21T23:05:53.0405727Z           "complete": true,
2026-06-21T23:05:53.0405842Z           "evidence": [
2026-06-21T23:05:53.0405954Z             {
2026-06-21T23:05:53.0406093Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0406196Z               "line": 19
2026-06-21T23:05:53.0406299Z             },
2026-06-21T23:05:53.0406405Z             {
2026-06-21T23:05:53.0406548Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0406657Z               "line": 46
2026-06-21T23:05:53.0406754Z             },
2026-06-21T23:05:53.0406854Z             {
2026-06-21T23:05:53.0407006Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.0407125Z               "line": 532
2026-06-21T23:05:53.0407225Z             },
2026-06-21T23:05:53.0407330Z             {
2026-06-21T23:05:53.0407459Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0407568Z               "line": 3110
2026-06-21T23:05:53.0407664Z             }
2026-06-21T23:05:53.0407779Z           ]
2026-06-21T23:05:53.0407874Z         },
2026-06-21T23:05:53.0407974Z         "int": {
2026-06-21T23:05:53.0408089Z           "complete": true,
2026-06-21T23:05:53.0408198Z           "evidence": [
2026-06-21T23:05:53.0408309Z             {
2026-06-21T23:05:53.0408460Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T23:05:53.0408573Z               "line": 98
2026-06-21T23:05:53.0408678Z             },
2026-06-21T23:05:53.0408777Z             {
2026-06-21T23:05:53.0408928Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T23:05:53.0409171Z               "line": 128
2026-06-21T23:05:53.0409311Z             }
2026-06-21T23:05:53.0409411Z           ]
2026-06-21T23:05:53.0409515Z         },
2026-06-21T23:05:53.0409616Z         "unit": {
2026-06-21T23:05:53.0409725Z           "complete": true,
2026-06-21T23:05:53.0409839Z           "evidence": [
2026-06-21T23:05:53.0409935Z             {
2026-06-21T23:05:53.0410068Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0410289Z               "line": 68
2026-06-21T23:05:53.0410398Z             },
2026-06-21T23:05:53.0410594Z             {
2026-06-21T23:05:53.0410721Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0410827Z               "line": 79
2026-06-21T23:05:53.0410928Z             },
2026-06-21T23:05:53.0411035Z             {
2026-06-21T23:05:53.0411166Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0411271Z               "line": 90
2026-06-21T23:05:53.0411378Z             },
2026-06-21T23:05:53.0411478Z             {
2026-06-21T23:05:53.0411608Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0411712Z               "line": 151
2026-06-21T23:05:53.0411817Z             }
2026-06-21T23:05:53.0411913Z           ]
2026-06-21T23:05:53.0412017Z         }
2026-06-21T23:05:53.0412127Z       }
2026-06-21T23:05:53.0412223Z     },
2026-06-21T23:05:53.0412323Z     {
2026-06-21T23:05:53.0412437Z       "id": "REQ-MSG-5",
2026-06-21T23:05:53.0413201Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T23:05:53.0413328Z       "requiredStages": [
2026-06-21T23:05:53.0413425Z         "doc",
2026-06-21T23:05:53.0413529Z         "impl",
2026-06-21T23:05:53.0413628Z         "unit"
2026-06-21T23:05:53.0413733Z       ],
2026-06-21T23:05:53.0413837Z       "stages": {
2026-06-21T23:05:53.0413950Z         "doc": {
2026-06-21T23:05:53.0414069Z           "complete": true,
2026-06-21T23:05:53.0414170Z           "evidence": [
2026-06-21T23:05:53.0414284Z             {
2026-06-21T23:05:53.0414393Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0414508Z               "line": 231
2026-06-21T23:05:53.0414603Z             }
2026-06-21T23:05:53.0414704Z           ]
2026-06-21T23:05:53.0414813Z         },
2026-06-21T23:05:53.0414908Z         "impl": {
2026-06-21T23:05:53.0415019Z           "complete": true,
2026-06-21T23:05:53.0415133Z           "evidence": [
2026-06-21T23:05:53.0415237Z             {
2026-06-21T23:05:53.0415377Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:05:53.0415485Z               "line": 60
2026-06-21T23:05:53.0415595Z             },
2026-06-21T23:05:53.0415697Z             {
2026-06-21T23:05:53.0415843Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:53.0415948Z               "line": 126
2026-06-21T23:05:53.0416044Z             },
2026-06-21T23:05:53.0416143Z             {
2026-06-21T23:05:53.0416288Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:53.0416402Z               "line": 135
2026-06-21T23:05:53.0416505Z             },
2026-06-21T23:05:53.0416610Z             {
2026-06-21T23:05:53.0416747Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:53.0416860Z               "line": 149
2026-06-21T23:05:53.0416970Z             },
2026-06-21T23:05:53.0417080Z             {
2026-06-21T23:05:53.0417227Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:53.0417328Z               "line": 178
2026-06-21T23:05:53.0417433Z             },
2026-06-21T23:05:53.0417532Z             {
2026-06-21T23:05:53.0417667Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0417776Z               "line": 2802
2026-06-21T23:05:53.0417881Z             }
2026-06-21T23:05:53.0417991Z           ]
2026-06-21T23:05:53.0418095Z         },
2026-06-21T23:05:53.0418200Z         "int": {
2026-06-21T23:05:53.0418305Z           "complete": true,
2026-06-21T23:05:53.0418414Z           "evidence": [
2026-06-21T23:05:53.0418515Z             {
2026-06-21T23:05:53.0418663Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T23:05:53.0418768Z               "line": 19
2026-06-21T23:05:53.0418864Z             }
2026-06-21T23:05:53.0419053Z           ]
2026-06-21T23:05:53.0419337Z         },
2026-06-21T23:05:53.0419445Z         "unit": {
2026-06-21T23:05:53.0419551Z           "complete": true,
2026-06-21T23:05:53.0419750Z           "evidence": [
2026-06-21T23:05:53.0419856Z             {
2026-06-21T23:05:53.0419995Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:05:53.0420104Z               "line": 192
2026-06-21T23:05:53.0420200Z             },
2026-06-21T23:05:53.0420295Z             {
2026-06-21T23:05:53.0420438Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T23:05:53.0420543Z               "line": 154
2026-06-21T23:05:53.0420648Z             },
2026-06-21T23:05:53.0420748Z             {
2026-06-21T23:05:53.0420877Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0420982Z               "line": 122
2026-06-21T23:05:53.0421086Z             },
2026-06-21T23:05:53.0421187Z             {
2026-06-21T23:05:53.0421329Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:53.0421436Z               "line": 452
2026-06-21T23:05:53.0421544Z             },
2026-06-21T23:05:53.0421640Z             {
2026-06-21T23:05:53.0421769Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:53.0421878Z               "line": 501
2026-06-21T23:05:53.0421982Z             },
2026-06-21T23:05:53.0422082Z             {
2026-06-21T23:05:53.0422216Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:53.0422325Z               "line": 517
2026-06-21T23:05:53.0422430Z             },
2026-06-21T23:05:53.0422531Z             {
2026-06-21T23:05:53.0422668Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:53.0422774Z               "line": 536
2026-06-21T23:05:53.0422874Z             },
2026-06-21T23:05:53.0422978Z             {
2026-06-21T23:05:53.0423103Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0423208Z               "line": 7660
2026-06-21T23:05:53.0423302Z             }
2026-06-21T23:05:53.0423404Z           ]
2026-06-21T23:05:53.0423507Z         }
2026-06-21T23:05:53.0423607Z       }
2026-06-21T23:05:53.0423704Z     },
2026-06-21T23:05:53.0423807Z     {
2026-06-21T23:05:53.0423922Z       "id": "REQ-MSG-6",
2026-06-21T23:05:53.0425540Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T23:05:53.0425669Z       "requiredStages": [
2026-06-21T23:05:53.0425774Z         "doc",
2026-06-21T23:05:53.0425878Z         "impl",
2026-06-21T23:05:53.0425984Z         "unit"
2026-06-21T23:05:53.0426084Z       ],
2026-06-21T23:05:53.0426193Z       "stages": {
2026-06-21T23:05:53.0426309Z         "doc": {
2026-06-21T23:05:53.0426422Z           "complete": true,
2026-06-21T23:05:53.0426538Z           "evidence": [
2026-06-21T23:05:53.0426642Z             {
2026-06-21T23:05:53.0426766Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0426876Z               "line": 234
2026-06-21T23:05:53.0426980Z             }
2026-06-21T23:05:53.0427089Z           ]
2026-06-21T23:05:53.0427189Z         },
2026-06-21T23:05:53.0427297Z         "impl": {
2026-06-21T23:05:53.0427411Z           "complete": true,
2026-06-21T23:05:53.0427525Z           "evidence": [
2026-06-21T23:05:53.0427617Z             {
2026-06-21T23:05:53.0427772Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0427888Z               "line": 177
2026-06-21T23:05:53.0427988Z             },
2026-06-21T23:05:53.0428092Z             {
2026-06-21T23:05:53.0428245Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0428359Z               "line": 428
2026-06-21T23:05:53.0428536Z             },
2026-06-21T23:05:53.0428636Z             {
2026-06-21T23:05:53.0428794Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0429037Z               "line": 451
2026-06-21T23:05:53.0429133Z             },
2026-06-21T23:05:53.0429223Z             {
2026-06-21T23:05:53.0429370Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:05:53.0429477Z               "line": 89
2026-06-21T23:05:53.0429585Z             },
2026-06-21T23:05:53.0429693Z             {
2026-06-21T23:05:53.0429836Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0429944Z               "line": 155
2026-06-21T23:05:53.0430044Z             }
2026-06-21T23:05:53.0430145Z           ]
2026-06-21T23:05:53.0430240Z         },
2026-06-21T23:05:53.0430339Z         "int": {
2026-06-21T23:05:53.0430455Z           "complete": false,
2026-06-21T23:05:53.0430560Z           "evidence": []
2026-06-21T23:05:53.0430664Z         },
2026-06-21T23:05:53.0430770Z         "unit": {
2026-06-21T23:05:53.0430874Z           "complete": true,
2026-06-21T23:05:53.0430983Z           "evidence": [
2026-06-21T23:05:53.0431084Z             {
2026-06-21T23:05:53.0431236Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0431346Z               "line": 1746
2026-06-21T23:05:53.0431437Z             },
2026-06-21T23:05:53.0431537Z             {
2026-06-21T23:05:53.0431671Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:05:53.0431780Z               "line": 219
2026-06-21T23:05:53.0431880Z             }
2026-06-21T23:05:53.0431986Z           ]
2026-06-21T23:05:53.0432086Z         }
2026-06-21T23:05:53.0432185Z       }
2026-06-21T23:05:53.0432281Z     },
2026-06-21T23:05:53.0432382Z     {
2026-06-21T23:05:53.0432499Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T23:05:53.0436206Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T23:05:53.0436391Z       "requiredStages": [
2026-06-21T23:05:53.0436497Z         "doc",
2026-06-21T23:05:53.0436605Z         "impl",
2026-06-21T23:05:53.0436710Z         "unit",
2026-06-21T23:05:53.0436807Z         "int"
2026-06-21T23:05:53.0436897Z       ],
2026-06-21T23:05:53.0437001Z       "stages": {
2026-06-21T23:05:53.0437103Z         "doc": {
2026-06-21T23:05:53.0437216Z           "complete": true,
2026-06-21T23:05:53.0437321Z           "evidence": [
2026-06-21T23:05:53.0437422Z             {
2026-06-21T23:05:53.0437682Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T23:05:53.0437787Z               "line": 47
2026-06-21T23:05:53.0437890Z             }
2026-06-21T23:05:53.0437995Z           ]
2026-06-21T23:05:53.0438085Z         },
2026-06-21T23:05:53.0438191Z         "impl": {
2026-06-21T23:05:53.0438300Z           "complete": true,
2026-06-21T23:05:53.0438400Z           "evidence": [
2026-06-21T23:05:53.0438614Z             {
2026-06-21T23:05:53.0438759Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0439025Z               "line": 20
2026-06-21T23:05:53.0439116Z             },
2026-06-21T23:05:53.0439220Z             {
2026-06-21T23:05:53.0439345Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0439459Z               "line": 33
2026-06-21T23:05:53.0439558Z             },
2026-06-21T23:05:53.0439655Z             {
2026-06-21T23:05:53.0439783Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0439883Z               "line": 47
2026-06-21T23:05:53.0439975Z             },
2026-06-21T23:05:53.0440070Z             {
2026-06-21T23:05:53.0440197Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0440311Z               "line": 58
2026-06-21T23:05:53.0440415Z             },
2026-06-21T23:05:53.0440523Z             {
2026-06-21T23:05:53.0440652Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:05:53.0440781Z               "line": 14
2026-06-21T23:05:53.0440880Z             },
2026-06-21T23:05:53.0440987Z             {
2026-06-21T23:05:53.0441110Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:05:53.0441224Z               "line": 27
2026-06-21T23:05:53.0441330Z             },
2026-06-21T23:05:53.0441429Z             {
2026-06-21T23:05:53.0441558Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:05:53.0441663Z               "line": 40
2026-06-21T23:05:53.0441773Z             },
2026-06-21T23:05:53.0441873Z             {
2026-06-21T23:05:53.0442016Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:53.0442121Z               "line": 92
2026-06-21T23:05:53.0442221Z             },
2026-06-21T23:05:53.0442317Z             {
2026-06-21T23:05:53.0442459Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0442570Z               "line": 143
2026-06-21T23:05:53.0442674Z             },
2026-06-21T23:05:53.0442779Z             {
2026-06-21T23:05:53.0442927Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0443040Z               "line": 216
2026-06-21T23:05:53.0443144Z             },
2026-06-21T23:05:53.0443245Z             {
2026-06-21T23:05:53.0443388Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.0443492Z               "line": 533
2026-06-21T23:05:53.0443604Z             },
2026-06-21T23:05:53.0443707Z             {
2026-06-21T23:05:53.0443842Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:05:53.0443956Z               "line": 78
2026-06-21T23:05:53.0444060Z             },
2026-06-21T23:05:53.0444161Z             {
2026-06-21T23:05:53.0444289Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0444408Z               "line": 3111
2026-06-21T23:05:53.0444509Z             }
2026-06-21T23:05:53.0444604Z           ]
2026-06-21T23:05:53.0444708Z         },
2026-06-21T23:05:53.0444815Z         "int": {
2026-06-21T23:05:53.0444933Z           "complete": true,
2026-06-21T23:05:53.0445037Z           "evidence": [
2026-06-21T23:05:53.0445134Z             {
2026-06-21T23:05:53.0445294Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T23:05:53.0445403Z               "line": 15
2026-06-21T23:05:53.0445509Z             }
2026-06-21T23:05:53.0445611Z           ]
2026-06-21T23:05:53.0445720Z         },
2026-06-21T23:05:53.0445827Z         "unit": {
2026-06-21T23:05:53.0445950Z           "complete": true,
2026-06-21T23:05:53.0446064Z           "evidence": [
2026-06-21T23:05:53.0446165Z             {
2026-06-21T23:05:53.0446302Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0446413Z               "line": 102
2026-06-21T23:05:53.0446522Z             },
2026-06-21T23:05:53.0446622Z             {
2026-06-21T23:05:53.0446761Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:05:53.0446861Z               "line": 137
2026-06-21T23:05:53.0446960Z             },
2026-06-21T23:05:53.0447180Z             {
2026-06-21T23:05:53.0447309Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:05:53.0447508Z               "line": 98
2026-06-21T23:05:53.0447609Z             },
2026-06-21T23:05:53.0447711Z             {
2026-06-21T23:05:53.0447837Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:05:53.0447944Z               "line": 106
2026-06-21T23:05:53.0448045Z             },
2026-06-21T23:05:53.0448138Z             {
2026-06-21T23:05:53.0448265Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:05:53.0448371Z               "line": 113
2026-06-21T23:05:53.0448479Z             },
2026-06-21T23:05:53.0448597Z             {
2026-06-21T23:05:53.0448732Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:05:53.0448840Z               "line": 122
2026-06-21T23:05:53.0449023Z             }
2026-06-21T23:05:53.0449174Z           ]
2026-06-21T23:05:53.0449290Z         }
2026-06-21T23:05:53.0449385Z       }
2026-06-21T23:05:53.0449484Z     },
2026-06-21T23:05:53.0449590Z     {
2026-06-21T23:05:53.0449757Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T23:05:53.0454673Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T23:05:53.0454840Z       "requiredStages": [
2026-06-21T23:05:53.0454945Z         "doc",
2026-06-21T23:05:53.0455041Z         "impl",
2026-06-21T23:05:53.0455145Z         "unit",
2026-06-21T23:05:53.0455250Z         "int"
2026-06-21T23:05:53.0455351Z       ],
2026-06-21T23:05:53.0455446Z       "stages": {
2026-06-21T23:05:53.0455560Z         "doc": {
2026-06-21T23:05:53.0455680Z           "complete": true,
2026-06-21T23:05:53.0455785Z           "evidence": [
2026-06-21T23:05:53.0455888Z             {
2026-06-21T23:05:53.0456064Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T23:05:53.0456181Z               "line": 277
2026-06-21T23:05:53.0456285Z             },
2026-06-21T23:05:53.0456392Z             {
2026-06-21T23:05:53.0456515Z               "path": "docs/MANIFEST.md",
2026-06-21T23:05:53.0456634Z               "line": 198
2026-06-21T23:05:53.0456725Z             }
2026-06-21T23:05:53.0456825Z           ]
2026-06-21T23:05:53.0456925Z         },
2026-06-21T23:05:53.0457031Z         "impl": {
2026-06-21T23:05:53.0457144Z           "complete": true,
2026-06-21T23:05:53.0457244Z           "evidence": [
2026-06-21T23:05:53.0457345Z             {
2026-06-21T23:05:53.0457612Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:53.0457726Z               "line": 1103
2026-06-21T23:05:53.0457923Z             },
2026-06-21T23:05:53.0458022Z             {
2026-06-21T23:05:53.0458184Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:05:53.0458294Z               "line": 23
2026-06-21T23:05:53.0458398Z             },
2026-06-21T23:05:53.0458499Z             {
2026-06-21T23:05:53.0458652Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:05:53.0458760Z               "line": 91
2026-06-21T23:05:53.0458860Z             },
2026-06-21T23:05:53.0459058Z             {
2026-06-21T23:05:53.0459264Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:05:53.0459373Z               "line": 239
2026-06-21T23:05:53.0459477Z             },
2026-06-21T23:05:53.0459583Z             {
2026-06-21T23:05:53.0459729Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:05:53.0459826Z               "line": 287
2026-06-21T23:05:53.0459935Z             },
2026-06-21T23:05:53.0460039Z             {
2026-06-21T23:05:53.0460198Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:05:53.0460302Z               "line": 311
2026-06-21T23:05:53.0460412Z             },
2026-06-21T23:05:53.0460518Z             {
2026-06-21T23:05:53.0460655Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0460770Z               "line": 60
2026-06-21T23:05:53.0460871Z             },
2026-06-21T23:05:53.0460974Z             {
2026-06-21T23:05:53.0461123Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0461223Z               "line": 889
2026-06-21T23:05:53.0461327Z             }
2026-06-21T23:05:53.0461431Z           ]
2026-06-21T23:05:53.0461536Z         },
2026-06-21T23:05:53.0461639Z         "int": {
2026-06-21T23:05:53.0461758Z           "complete": true,
2026-06-21T23:05:53.0461864Z           "evidence": [
2026-06-21T23:05:53.0461967Z             {
2026-06-21T23:05:53.0462149Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:05:53.0462258Z               "line": 1089
2026-06-21T23:05:53.0462368Z             },
2026-06-21T23:05:53.0462464Z             {
2026-06-21T23:05:53.0462630Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:05:53.0462741Z               "line": 1194
2026-06-21T23:05:53.0462845Z             },
2026-06-21T23:05:53.0462950Z             {
2026-06-21T23:05:53.0463117Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:05:53.0463231Z               "line": 1262
2026-06-21T23:05:53.0463332Z             },
2026-06-21T23:05:53.0463437Z             {
2026-06-21T23:05:53.0463613Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:05:53.0463724Z               "line": 1355
2026-06-21T23:05:53.0463832Z             }
2026-06-21T23:05:53.0463933Z           ]
2026-06-21T23:05:53.0464039Z         },
2026-06-21T23:05:53.0464141Z         "unit": {
2026-06-21T23:05:53.0464255Z           "complete": true,
2026-06-21T23:05:53.0464370Z           "evidence": [
2026-06-21T23:05:53.0464475Z             {
2026-06-21T23:05:53.0464632Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:53.0464742Z               "line": 270
2026-06-21T23:05:53.0464847Z             },
2026-06-21T23:05:53.0464952Z             {
2026-06-21T23:05:53.0465114Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:05:53.0465238Z               "line": 350
2026-06-21T23:05:53.0465329Z             },
2026-06-21T23:05:53.0465433Z             {
2026-06-21T23:05:53.0465581Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:05:53.0465691Z               "line": 381
2026-06-21T23:05:53.0465791Z             },
2026-06-21T23:05:53.0465887Z             {
2026-06-21T23:05:53.0466030Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:05:53.0466240Z               "line": 411
2026-06-21T23:05:53.0466353Z             },
2026-06-21T23:05:53.0466452Z             {
2026-06-21T23:05:53.0466718Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:05:53.0466836Z               "line": 440
2026-06-21T23:05:53.0466927Z             },
2026-06-21T23:05:53.0467032Z             {
2026-06-21T23:05:53.0467175Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0467291Z               "line": 1181
2026-06-21T23:05:53.0467390Z             }
2026-06-21T23:05:53.0467494Z           ]
2026-06-21T23:05:53.0467596Z         }
2026-06-21T23:05:53.0467699Z       }
2026-06-21T23:05:53.0467800Z     },
2026-06-21T23:05:53.0467901Z     {
2026-06-21T23:05:53.0468010Z       "id": "REQ-NET-1",
2026-06-21T23:05:53.0468210Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T23:05:53.0468325Z       "requiredStages": [
2026-06-21T23:05:53.0468434Z         "impl",
2026-06-21T23:05:53.0468540Z         "unit",
2026-06-21T23:05:53.0468643Z         "int"
2026-06-21T23:05:53.0468734Z       ],
2026-06-21T23:05:53.0468845Z       "stages": {
2026-06-21T23:05:53.0469054Z         "doc": {
2026-06-21T23:05:53.0469174Z           "complete": false,
2026-06-21T23:05:53.0469296Z           "evidence": []
2026-06-21T23:05:53.0469405Z         },
2026-06-21T23:05:53.0469520Z         "impl": {
2026-06-21T23:05:53.0469637Z           "complete": true,
2026-06-21T23:05:53.0469747Z           "evidence": [
2026-06-21T23:05:53.0469843Z             {
2026-06-21T23:05:53.0469999Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:53.0470105Z               "line": 54
2026-06-21T23:05:53.0470210Z             },
2026-06-21T23:05:53.0470313Z             {
2026-06-21T23:05:53.0470453Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:53.0470567Z               "line": 594
2026-06-21T23:05:53.0470662Z             },
2026-06-21T23:05:53.0470768Z             {
2026-06-21T23:05:53.0470915Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:05:53.0471015Z               "line": 130
2026-06-21T23:05:53.0471121Z             },
2026-06-21T23:05:53.0471225Z             {
2026-06-21T23:05:53.0471364Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0471473Z               "line": 97
2026-06-21T23:05:53.0471577Z             },
2026-06-21T23:05:53.0471688Z             {
2026-06-21T23:05:53.0471830Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0471943Z               "line": 159
2026-06-21T23:05:53.0472044Z             },
2026-06-21T23:05:53.0472142Z             {
2026-06-21T23:05:53.0472289Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0472395Z               "line": 175
2026-06-21T23:05:53.0472499Z             },
2026-06-21T23:05:53.0472594Z             {
2026-06-21T23:05:53.0472743Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0472847Z               "line": 190
2026-06-21T23:05:53.0472953Z             },
2026-06-21T23:05:53.0473052Z             {
2026-06-21T23:05:53.0473200Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0473325Z               "line": 271
2026-06-21T23:05:53.0473429Z             },
2026-06-21T23:05:53.0473524Z             {
2026-06-21T23:05:53.0473664Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0473782Z               "line": 306
2026-06-21T23:05:53.0473877Z             },
2026-06-21T23:05:53.0473969Z             {
2026-06-21T23:05:53.0474106Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0474207Z               "line": 312
2026-06-21T23:05:53.0474312Z             },
2026-06-21T23:05:53.0474440Z             {
2026-06-21T23:05:53.0474580Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0474692Z               "line": 318
2026-06-21T23:05:53.0474787Z             },
2026-06-21T23:05:53.0474897Z             {
2026-06-21T23:05:53.0475144Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0475250Z               "line": 334
2026-06-21T23:05:53.0475440Z             },
2026-06-21T23:05:53.0475546Z             {
2026-06-21T23:05:53.0475688Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0475783Z               "line": 354
2026-06-21T23:05:53.0475889Z             },
2026-06-21T23:05:53.0475989Z             {
2026-06-21T23:05:53.0476137Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T23:05:53.0476242Z               "line": 35
2026-06-21T23:05:53.0476346Z             },
2026-06-21T23:05:53.0476457Z             {
2026-06-21T23:05:53.0476594Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T23:05:53.0476704Z               "line": 85
2026-06-21T23:05:53.0476795Z             },
2026-06-21T23:05:53.0476900Z             {
2026-06-21T23:05:53.0477036Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:53.0477151Z               "line": 138
2026-06-21T23:05:53.0477254Z             },
2026-06-21T23:05:53.0477353Z             {
2026-06-21T23:05:53.0477487Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0477592Z               "line": 2953
2026-06-21T23:05:53.0477696Z             },
2026-06-21T23:05:53.0477798Z             {
2026-06-21T23:05:53.0477921Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:53.0478030Z               "line": 17
2026-06-21T23:05:53.0478132Z             }
2026-06-21T23:05:53.0478236Z           ]
2026-06-21T23:05:53.0478340Z         },
2026-06-21T23:05:53.0478446Z         "int": {
2026-06-21T23:05:53.0478551Z           "complete": true,
2026-06-21T23:05:53.0478665Z           "evidence": [
2026-06-21T23:05:53.0478770Z             {
2026-06-21T23:05:53.0478913Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:53.0479081Z               "line": 341
2026-06-21T23:05:53.0479171Z             },
2026-06-21T23:05:53.0479275Z             {
2026-06-21T23:05:53.0479424Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0479537Z               "line": 675
2026-06-21T23:05:53.0479648Z             },
2026-06-21T23:05:53.0479749Z             {
2026-06-21T23:05:53.0479899Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0480009Z               "line": 973
2026-06-21T23:05:53.0480108Z             }
2026-06-21T23:05:53.0480211Z           ]
2026-06-21T23:05:53.0480307Z         },
2026-06-21T23:05:53.0480412Z         "unit": {
2026-06-21T23:05:53.0480526Z           "complete": true,
2026-06-21T23:05:53.0480641Z           "evidence": [
2026-06-21T23:05:53.0480737Z             {
2026-06-21T23:05:53.0480883Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:53.0480989Z               "line": 651
2026-06-21T23:05:53.0481099Z             },
2026-06-21T23:05:53.0481207Z             {
2026-06-21T23:05:53.0481342Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:53.0481461Z               "line": 686
2026-06-21T23:05:53.0481561Z             },
2026-06-21T23:05:53.0481671Z             {
2026-06-21T23:05:53.0481818Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:53.0481939Z               "line": 940
2026-06-21T23:05:53.0482052Z             },
2026-06-21T23:05:53.0482157Z             {
2026-06-21T23:05:53.0482301Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T23:05:53.0482409Z               "line": 201
2026-06-21T23:05:53.0482518Z             },
2026-06-21T23:05:53.0482618Z             {
2026-06-21T23:05:53.0482768Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0482874Z               "line": 442
2026-06-21T23:05:53.0482974Z             },
2026-06-21T23:05:53.0483078Z             {
2026-06-21T23:05:53.0483208Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0486549Z               "line": 456
2026-06-21T23:05:53.0486677Z             },
2026-06-21T23:05:53.0486959Z             {
2026-06-21T23:05:53.0487126Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0487331Z               "line": 475
2026-06-21T23:05:53.0487437Z             },
2026-06-21T23:05:53.0487535Z             {
2026-06-21T23:05:53.0487682Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T23:05:53.0487796Z               "line": 120
2026-06-21T23:05:53.0487895Z             },
2026-06-21T23:05:53.0488000Z             {
2026-06-21T23:05:53.0488143Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T23:05:53.0488247Z               "line": 163
2026-06-21T23:05:53.0488348Z             },
2026-06-21T23:05:53.0488453Z             {
2026-06-21T23:05:53.0488595Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:05:53.0488701Z               "line": 530
2026-06-21T23:05:53.0488801Z             },
2026-06-21T23:05:53.0488900Z             {
2026-06-21T23:05:53.0489588Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:53.0489826Z               "line": 616
2026-06-21T23:05:53.0489956Z             },
2026-06-21T23:05:53.0490097Z             {
2026-06-21T23:05:53.0490271Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:53.0490417Z               "line": 1006
2026-06-21T23:05:53.0490531Z             }
2026-06-21T23:05:53.0490682Z           ]
2026-06-21T23:05:53.0490809Z         }
2026-06-21T23:05:53.0490939Z       }
2026-06-21T23:05:53.0491058Z     },
2026-06-21T23:05:53.0491172Z     {
2026-06-21T23:05:53.0491316Z       "id": "REQ-NET-2",
2026-06-21T23:05:53.0491578Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T23:05:53.0491725Z       "requiredStages": [
2026-06-21T23:05:53.0491850Z         "impl"
2026-06-21T23:05:53.0491983Z       ],
2026-06-21T23:05:53.0492111Z       "stages": {
2026-06-21T23:05:53.0492231Z         "doc": {
2026-06-21T23:05:53.0492374Z           "complete": false,
2026-06-21T23:05:53.0492508Z           "evidence": []
2026-06-21T23:05:53.0492640Z         },
2026-06-21T23:05:53.0492765Z         "impl": {
2026-06-21T23:05:53.0492904Z           "complete": true,
2026-06-21T23:05:53.0493040Z           "evidence": [
2026-06-21T23:05:53.0493159Z             {
2026-06-21T23:05:53.0493342Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:05:53.0493472Z               "line": 57
2026-06-21T23:05:53.0493601Z             },
2026-06-21T23:05:53.0493720Z             {
2026-06-21T23:05:53.0493911Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0494044Z               "line": 71
2026-06-21T23:05:53.0494159Z             },
2026-06-21T23:05:53.0494278Z             {
2026-06-21T23:05:53.0494450Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0494588Z               "line": 81
2026-06-21T23:05:53.0494702Z             },
2026-06-21T23:05:53.0494831Z             {
2026-06-21T23:05:53.0495003Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0495141Z               "line": 159
2026-06-21T23:05:53.0495269Z             },
2026-06-21T23:05:53.0495385Z             {
2026-06-21T23:05:53.0495556Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0495681Z               "line": 175
2026-06-21T23:05:53.0495813Z             },
2026-06-21T23:05:53.0495936Z             {
2026-06-21T23:05:53.0496109Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:05:53.0496246Z               "line": 190
2026-06-21T23:05:53.0496361Z             }
2026-06-21T23:05:53.0496480Z           ]
2026-06-21T23:05:53.0496594Z         },
2026-06-21T23:05:53.0496723Z         "int": {
2026-06-21T23:05:53.0496870Z           "complete": false,
2026-06-21T23:05:53.0497000Z           "evidence": []
2026-06-21T23:05:53.0497129Z         },
2026-06-21T23:05:53.0497252Z         "unit": {
2026-06-21T23:05:53.0497395Z           "complete": true,
2026-06-21T23:05:53.0497524Z           "evidence": [
2026-06-21T23:05:53.0497649Z             {
2026-06-21T23:05:53.0498071Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:05:53.0498209Z               "line": 402
2026-06-21T23:05:53.0498441Z             }
2026-06-21T23:05:53.0498560Z           ]
2026-06-21T23:05:53.0498676Z         }
2026-06-21T23:05:53.0498812Z       }
2026-06-21T23:05:53.0498933Z     },
2026-06-21T23:05:53.0499170Z     {
2026-06-21T23:05:53.0499304Z       "id": "REQ-NET-3",
2026-06-21T23:05:53.0499548Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T23:05:53.0499681Z       "requiredStages": [
2026-06-21T23:05:53.0499804Z         "impl",
2026-06-21T23:05:53.0499919Z         "unit"
2026-06-21T23:05:53.0500047Z       ],
2026-06-21T23:05:53.0500168Z       "stages": {
2026-06-21T23:05:53.0500276Z         "doc": {
2026-06-21T23:05:53.0500415Z           "complete": false,
2026-06-21T23:05:53.0500544Z           "evidence": []
2026-06-21T23:05:53.0500658Z         },
2026-06-21T23:05:53.0500783Z         "impl": {
2026-06-21T23:05:53.0500929Z           "complete": true,
2026-06-21T23:05:53.0501062Z           "evidence": [
2026-06-21T23:05:53.0501181Z             {
2026-06-21T23:05:53.0501364Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:53.0501489Z               "line": 39
2026-06-21T23:05:53.0501608Z             },
2026-06-21T23:05:53.0501722Z             {
2026-06-21T23:05:53.0501885Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:53.0502017Z               "line": 182
2026-06-21T23:05:53.0502138Z             },
2026-06-21T23:05:53.0502257Z             {
2026-06-21T23:05:53.0502415Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:05:53.0502548Z               "line": 333
2026-06-21T23:05:53.0502662Z             },
2026-06-21T23:05:53.0502786Z             {
2026-06-21T23:05:53.0502958Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T23:05:53.0503073Z               "line": 36
2026-06-21T23:05:53.0503191Z             },
2026-06-21T23:05:53.0503306Z             {
2026-06-21T23:05:53.0503501Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.0503638Z               "line": 158
2026-06-21T23:05:53.0503762Z             },
2026-06-21T23:05:53.0503879Z             {
2026-06-21T23:05:53.0504056Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.0504175Z               "line": 238
2026-06-21T23:05:53.0504299Z             },
2026-06-21T23:05:53.0504414Z             {
2026-06-21T23:05:53.0504590Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.0504714Z               "line": 259
2026-06-21T23:05:53.0504833Z             },
2026-06-21T23:05:53.0504953Z             {
2026-06-21T23:05:53.0505129Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.0505253Z               "line": 317
2026-06-21T23:05:53.0505367Z             },
2026-06-21T23:05:53.0505491Z             {
2026-06-21T23:05:53.0505649Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.0505767Z               "line": 336
2026-06-21T23:05:53.0505868Z             },
2026-06-21T23:05:53.0505979Z             {
2026-06-21T23:05:53.0506126Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.0506241Z               "line": 374
2026-06-21T23:05:53.0506350Z             },
2026-06-21T23:05:53.0506453Z             {
2026-06-21T23:05:53.0506601Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.0506711Z               "line": 419
2026-06-21T23:05:53.0506820Z             },
2026-06-21T23:05:53.0506916Z             {
2026-06-21T23:05:53.0507064Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.0507178Z               "line": 432
2026-06-21T23:05:53.0507274Z             },
2026-06-21T23:05:53.0507383Z             {
2026-06-21T23:05:53.0507532Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:05:53.0507645Z               "line": 29
2026-06-21T23:05:53.0507745Z             },
2026-06-21T23:05:53.0507965Z             {
2026-06-21T23:05:53.0508103Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:05:53.0508317Z               "line": 72
2026-06-21T23:05:53.0508423Z             },
2026-06-21T23:05:53.0508524Z             {
2026-06-21T23:05:53.0508669Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:05:53.0508769Z               "line": 123
2026-06-21T23:05:53.0508875Z             }
2026-06-21T23:05:53.0509048Z           ]
2026-06-21T23:05:53.0509139Z         },
2026-06-21T23:05:53.0509250Z         "int": {
2026-06-21T23:05:53.0509358Z           "complete": false,
2026-06-21T23:05:53.0509473Z           "evidence": []
2026-06-21T23:05:53.0509579Z         },
2026-06-21T23:05:53.0509687Z         "unit": {
2026-06-21T23:05:53.0509803Z           "complete": true,
2026-06-21T23:05:53.0509912Z           "evidence": [
2026-06-21T23:05:53.0510021Z             {
2026-06-21T23:05:53.0510165Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T23:05:53.0510283Z               "line": 223
2026-06-21T23:05:53.0510389Z             },
2026-06-21T23:05:53.0510503Z             {
2026-06-21T23:05:53.0510641Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T23:05:53.0510733Z               "line": 351
2026-06-21T23:05:53.0510836Z             },
2026-06-21T23:05:53.0510932Z             {
2026-06-21T23:05:53.0511067Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T23:05:53.0511170Z               "line": 504
2026-06-21T23:05:53.0511271Z             },
2026-06-21T23:05:53.0511377Z             {
2026-06-21T23:05:53.0511523Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T23:05:53.0511631Z               "line": 93
2026-06-21T23:05:53.0511732Z             },
2026-06-21T23:05:53.0511830Z             {
2026-06-21T23:05:53.0511968Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T23:05:53.0512074Z               "line": 142
2026-06-21T23:05:53.0512183Z             },
2026-06-21T23:05:53.0512287Z             {
2026-06-21T23:05:53.0512436Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:05:53.0512550Z               "line": 315
2026-06-21T23:05:53.0512694Z             },
2026-06-21T23:05:53.0512793Z             {
2026-06-21T23:05:53.0512927Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:05:53.0513041Z               "line": 355
2026-06-21T23:05:53.0513141Z             },
2026-06-21T23:05:53.0513251Z             {
2026-06-21T23:05:53.0513389Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:05:53.0513503Z               "line": 494
2026-06-21T23:05:53.0513614Z             }
2026-06-21T23:05:53.0513709Z           ]
2026-06-21T23:05:53.0513818Z         }
2026-06-21T23:05:53.0513910Z       }
2026-06-21T23:05:53.0514019Z     },
2026-06-21T23:05:53.0514108Z     {
2026-06-21T23:05:53.0514236Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T23:05:53.0514525Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T23:05:53.0514636Z       "requiredStages": [
2026-06-21T23:05:53.0514750Z         "impl",
2026-06-21T23:05:53.0514854Z         "unit"
2026-06-21T23:05:53.0514960Z       ],
2026-06-21T23:05:53.0515064Z       "stages": {
2026-06-21T23:05:53.0515174Z         "doc": {
2026-06-21T23:05:53.0515284Z           "complete": false,
2026-06-21T23:05:53.0515393Z           "evidence": []
2026-06-21T23:05:53.0515498Z         },
2026-06-21T23:05:53.0515603Z         "impl": {
2026-06-21T23:05:53.0515722Z           "complete": true,
2026-06-21T23:05:53.0515832Z           "evidence": [
2026-06-21T23:05:53.0515942Z             {
2026-06-21T23:05:53.0516089Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:05:53.0516200Z               "line": 60
2026-06-21T23:05:53.0516304Z             },
2026-06-21T23:05:53.0516404Z             {
2026-06-21T23:05:53.0516548Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:05:53.0516651Z               "line": 68
2026-06-21T23:05:53.0516863Z             },
2026-06-21T23:05:53.0516966Z             {
2026-06-21T23:05:53.0517104Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:05:53.0517314Z               "line": 86
2026-06-21T23:05:53.0517418Z             },
2026-06-21T23:05:53.0517520Z             {
2026-06-21T23:05:53.0517652Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:05:53.0517772Z               "line": 120
2026-06-21T23:05:53.0517881Z             },
2026-06-21T23:05:53.0518000Z             {
2026-06-21T23:05:53.0518139Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:05:53.0518249Z               "line": 127
2026-06-21T23:05:53.0518353Z             },
2026-06-21T23:05:53.0518454Z             {
2026-06-21T23:05:53.0518597Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:05:53.0518697Z               "line": 143
2026-06-21T23:05:53.0518793Z             },
2026-06-21T23:05:53.0518896Z             {
2026-06-21T23:05:53.0519098Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T23:05:53.0519206Z               "line": 16
2026-06-21T23:05:53.0519315Z             }
2026-06-21T23:05:53.0519425Z           ]
2026-06-21T23:05:53.0519532Z         },
2026-06-21T23:05:53.0519632Z         "int": {
2026-06-21T23:05:53.0519748Z           "complete": false,
2026-06-21T23:05:53.0519847Z           "evidence": []
2026-06-21T23:05:53.0519952Z         },
2026-06-21T23:05:53.0520058Z         "unit": {
2026-06-21T23:05:53.0520167Z           "complete": true,
2026-06-21T23:05:53.0520280Z           "evidence": [
2026-06-21T23:05:53.0520382Z             {
2026-06-21T23:05:53.0520519Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:05:53.0520625Z               "line": 199
2026-06-21T23:05:53.0520734Z             },
2026-06-21T23:05:53.0520829Z             {
2026-06-21T23:05:53.0520973Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:05:53.0521082Z               "line": 218
2026-06-21T23:05:53.0521182Z             },
2026-06-21T23:05:53.0521288Z             {
2026-06-21T23:05:53.0521425Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:05:53.0521535Z               "line": 234
2026-06-21T23:05:53.0521637Z             },
2026-06-21T23:05:53.0521740Z             {
2026-06-21T23:05:53.0521874Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:05:53.0521975Z               "line": 256
2026-06-21T23:05:53.0522078Z             },
2026-06-21T23:05:53.0522177Z             {
2026-06-21T23:05:53.0522316Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T23:05:53.0522428Z               "line": 124
2026-06-21T23:05:53.0522533Z             },
2026-06-21T23:05:53.0522638Z             {
2026-06-21T23:05:53.0522771Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T23:05:53.0522877Z               "line": 140
2026-06-21T23:05:53.0522977Z             },
2026-06-21T23:05:53.0523081Z             {
2026-06-21T23:05:53.0523216Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T23:05:53.0523310Z               "line": 155
2026-06-21T23:05:53.0523424Z             }
2026-06-21T23:05:53.0523520Z           ]
2026-06-21T23:05:53.0523615Z         }
2026-06-21T23:05:53.0523725Z       }
2026-06-21T23:05:53.0523831Z     },
2026-06-21T23:05:53.0523935Z     {
2026-06-21T23:05:53.0524039Z       "id": "REQ-NOTIF-1",
2026-06-21T23:05:53.0524436Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T23:05:53.0524542Z       "requiredStages": [
2026-06-21T23:05:53.0524654Z         "impl",
2026-06-21T23:05:53.0524758Z         "unit",
2026-06-21T23:05:53.0524859Z         "int"
2026-06-21T23:05:53.0524961Z       ],
2026-06-21T23:05:53.0525066Z       "stages": {
2026-06-21T23:05:53.0525181Z         "doc": {
2026-06-21T23:05:53.0525290Z           "complete": false,
2026-06-21T23:05:53.0525400Z           "evidence": []
2026-06-21T23:05:53.0525491Z         },
2026-06-21T23:05:53.0525724Z         "impl": {
2026-06-21T23:05:53.0525834Z           "complete": true,
2026-06-21T23:05:53.0526034Z           "evidence": [
2026-06-21T23:05:53.0526135Z             {
2026-06-21T23:05:53.0526273Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:53.0526388Z               "line": 514
2026-06-21T23:05:53.0526487Z             },
2026-06-21T23:05:53.0526602Z             {
2026-06-21T23:05:53.0526741Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0526850Z               "line": 30
2026-06-21T23:05:53.0526950Z             },
2026-06-21T23:05:53.0527042Z             {
2026-06-21T23:05:53.0527183Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0527284Z               "line": 69
2026-06-21T23:05:53.0527390Z             },
2026-06-21T23:05:53.0527493Z             {
2026-06-21T23:05:53.0527625Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0527736Z               "line": 93
2026-06-21T23:05:53.0527831Z             },
2026-06-21T23:05:53.0527940Z             {
2026-06-21T23:05:53.0528075Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0528188Z               "line": 107
2026-06-21T23:05:53.0528293Z             },
2026-06-21T23:05:53.0528394Z             {
2026-06-21T23:05:53.0528527Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0528632Z               "line": 142
2026-06-21T23:05:53.0528742Z             },
2026-06-21T23:05:53.0528837Z             {
2026-06-21T23:05:53.0529043Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0529152Z               "line": 187
2026-06-21T23:05:53.0529252Z             },
2026-06-21T23:05:53.0529362Z             {
2026-06-21T23:05:53.0529486Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0529591Z               "line": 258
2026-06-21T23:05:53.0529691Z             },
2026-06-21T23:05:53.0529799Z             {
2026-06-21T23:05:53.0529952Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0530060Z               "line": 372
2026-06-21T23:05:53.0530173Z             },
2026-06-21T23:05:53.0530278Z             {
2026-06-21T23:05:53.0530422Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0530526Z               "line": 479
2026-06-21T23:05:53.0530618Z             },
2026-06-21T23:05:53.0530717Z             {
2026-06-21T23:05:53.0530860Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:05:53.0530966Z               "line": 24
2026-06-21T23:05:53.0531070Z             },
2026-06-21T23:05:53.0531175Z             {
2026-06-21T23:05:53.0531323Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:05:53.0531432Z               "line": 34
2026-06-21T23:05:53.0531538Z             },
2026-06-21T23:05:53.0531642Z             {
2026-06-21T23:05:53.0531780Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:05:53.0531882Z               "line": 60
2026-06-21T23:05:53.0531994Z             },
2026-06-21T23:05:53.0532100Z             {
2026-06-21T23:05:53.0532235Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:05:53.0532353Z               "line": 82
2026-06-21T23:05:53.0532449Z             },
2026-06-21T23:05:53.0532554Z             {
2026-06-21T23:05:53.0532690Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:05:53.0532800Z               "line": 94
2026-06-21T23:05:53.0532909Z             },
2026-06-21T23:05:53.0533002Z             {
2026-06-21T23:05:53.0533150Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:53.0533256Z               "line": 96
2026-06-21T23:05:53.0533365Z             },
2026-06-21T23:05:53.0533466Z             {
2026-06-21T23:05:53.0533618Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T23:05:53.0533722Z               "line": 44
2026-06-21T23:05:53.0533819Z             },
2026-06-21T23:05:53.0533919Z             {
2026-06-21T23:05:53.0534171Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T23:05:53.0534347Z               "line": 20
2026-06-21T23:05:53.0534533Z             },
2026-06-21T23:05:53.0534633Z             {
2026-06-21T23:05:53.0534773Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T23:05:53.0534881Z               "line": 30
2026-06-21T23:05:53.0534986Z             },
2026-06-21T23:05:53.0535088Z             {
2026-06-21T23:05:53.0535233Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T23:05:53.0535343Z               "line": 50
2026-06-21T23:05:53.0535447Z             },
2026-06-21T23:05:53.0535545Z             {
2026-06-21T23:05:53.0535679Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0535780Z               "line": 28
2026-06-21T23:05:53.0535884Z             },
2026-06-21T23:05:53.0535989Z             {
2026-06-21T23:05:53.0536128Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0536237Z               "line": 126
2026-06-21T23:05:53.0536352Z             },
2026-06-21T23:05:53.0536457Z             {
2026-06-21T23:05:53.0536594Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0536709Z               "line": 161
2026-06-21T23:05:53.0536819Z             },
2026-06-21T23:05:53.0536918Z             {
2026-06-21T23:05:53.0537048Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0537162Z               "line": 202
2026-06-21T23:05:53.0537258Z             },
2026-06-21T23:05:53.0537367Z             {
2026-06-21T23:05:53.0537491Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0537606Z               "line": 213
2026-06-21T23:05:53.0537715Z             },
2026-06-21T23:05:53.0537815Z             {
2026-06-21T23:05:53.0537945Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0538058Z               "line": 238
2026-06-21T23:05:53.0538166Z             },
2026-06-21T23:05:53.0538258Z             {
2026-06-21T23:05:53.0538410Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0538524Z               "line": 261
2026-06-21T23:05:53.0538621Z             },
2026-06-21T23:05:53.0538730Z             {
2026-06-21T23:05:53.0538859Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0539026Z               "line": 86
2026-06-21T23:05:53.0539125Z             }
2026-06-21T23:05:53.0539227Z           ]
2026-06-21T23:05:53.0539331Z         },
2026-06-21T23:05:53.0539435Z         "int": {
2026-06-21T23:05:53.0539551Z           "complete": true,
2026-06-21T23:05:53.0539655Z           "evidence": [
2026-06-21T23:05:53.0539755Z             {
2026-06-21T23:05:53.0539908Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:53.0540017Z               "line": 285
2026-06-21T23:05:53.0540117Z             },
2026-06-21T23:05:53.0540218Z             {
2026-06-21T23:05:53.0540350Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T23:05:53.0540459Z               "line": 145
2026-06-21T23:05:53.0540569Z             },
2026-06-21T23:05:53.0540667Z             {
2026-06-21T23:05:53.0540825Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0540935Z               "line": 684
2026-06-21T23:05:53.0541033Z             },
2026-06-21T23:05:53.0541135Z             {
2026-06-21T23:05:53.0541268Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0541382Z               "line": 1102
2026-06-21T23:05:53.0541483Z             }
2026-06-21T23:05:53.0541592Z           ]
2026-06-21T23:05:53.0541696Z         },
2026-06-21T23:05:53.0541798Z         "unit": {
2026-06-21T23:05:53.0541907Z           "complete": true,
2026-06-21T23:05:53.0542016Z           "evidence": [
2026-06-21T23:05:53.0542112Z             {
2026-06-21T23:05:53.0542241Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0542345Z               "line": 572
2026-06-21T23:05:53.0542451Z             },
2026-06-21T23:05:53.0542550Z             {
2026-06-21T23:05:53.0542799Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0542903Z               "line": 636
2026-06-21T23:05:53.0543105Z             },
2026-06-21T23:05:53.0543208Z             {
2026-06-21T23:05:53.0543341Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0543450Z               "line": 740
2026-06-21T23:05:53.0543548Z             },
2026-06-21T23:05:53.0543653Z             {
2026-06-21T23:05:53.0543782Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0543891Z               "line": 772
2026-06-21T23:05:53.0543992Z             },
2026-06-21T23:05:53.0544093Z             {
2026-06-21T23:05:53.0544230Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0544336Z               "line": 840
2026-06-21T23:05:53.0544431Z             },
2026-06-21T23:05:53.0544526Z             {
2026-06-21T23:05:53.0544665Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0544783Z               "line": 898
2026-06-21T23:05:53.0544878Z             },
2026-06-21T23:05:53.0544989Z             {
2026-06-21T23:05:53.0545126Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0545237Z               "line": 1173
2026-06-21T23:05:53.0545333Z             },
2026-06-21T23:05:53.0545436Z             {
2026-06-21T23:05:53.0545586Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:05:53.0545686Z               "line": 157
2026-06-21T23:05:53.0545808Z             },
2026-06-21T23:05:53.0545917Z             {
2026-06-21T23:05:53.0546068Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:05:53.0546177Z               "line": 250
2026-06-21T23:05:53.0546282Z             },
2026-06-21T23:05:53.0546401Z             {
2026-06-21T23:05:53.0546539Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:05:53.0546664Z               "line": 273
2026-06-21T23:05:53.0546763Z             },
2026-06-21T23:05:53.0546864Z             {
2026-06-21T23:05:53.0547007Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:53.0547121Z               "line": 355
2026-06-21T23:05:53.0547232Z             },
2026-06-21T23:05:53.0547331Z             {
2026-06-21T23:05:53.0547478Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:05:53.0547580Z               "line": 392
2026-06-21T23:05:53.0547689Z             },
2026-06-21T23:05:53.0547793Z             {
2026-06-21T23:05:53.0547942Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T23:05:53.0548060Z               "line": 131
2026-06-21T23:05:53.0548162Z             },
2026-06-21T23:05:53.0548270Z             {
2026-06-21T23:05:53.0548404Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T23:05:53.0548505Z               "line": 72
2026-06-21T23:05:53.0548609Z             },
2026-06-21T23:05:53.0548717Z             {
2026-06-21T23:05:53.0548866Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T23:05:53.0549037Z               "line": 97
2026-06-21T23:05:53.0549133Z             },
2026-06-21T23:05:53.0549238Z             {
2026-06-21T23:05:53.0549361Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0549467Z               "line": 379
2026-06-21T23:05:53.0549567Z             },
2026-06-21T23:05:53.0549676Z             {
2026-06-21T23:05:53.0549810Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0549929Z               "line": 417
2026-06-21T23:05:53.0550028Z             },
2026-06-21T23:05:53.0550135Z             {
2026-06-21T23:05:53.0550277Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0550392Z               "line": 433
2026-06-21T23:05:53.0550497Z             },
2026-06-21T23:05:53.0550601Z             {
2026-06-21T23:05:53.0550736Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0550834Z               "line": 472
2026-06-21T23:05:53.0550943Z             },
2026-06-21T23:05:53.0551157Z             {
2026-06-21T23:05:53.0551279Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0551462Z               "line": 489
2026-06-21T23:05:53.0551561Z             },
2026-06-21T23:05:53.0551665Z             {
2026-06-21T23:05:53.0551800Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0551904Z               "line": 517
2026-06-21T23:05:53.0552010Z             },
2026-06-21T23:05:53.0552115Z             {
2026-06-21T23:05:53.0552251Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:05:53.0552358Z               "line": 548
2026-06-21T23:05:53.0552467Z             },
2026-06-21T23:05:53.0552562Z             {
2026-06-21T23:05:53.0552711Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0552810Z               "line": 745
2026-06-21T23:05:53.0552910Z             }
2026-06-21T23:05:53.0553011Z           ]
2026-06-21T23:05:53.0553101Z         }
2026-06-21T23:05:53.0553206Z       }
2026-06-21T23:05:53.0553312Z     },
2026-06-21T23:05:53.0553420Z     {
2026-06-21T23:05:53.0553530Z       "id": "REQ-NOTIF-2",
2026-06-21T23:05:53.0553829Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T23:05:53.0553954Z       "requiredStages": [
2026-06-21T23:05:53.0554057Z         "doc",
2026-06-21T23:05:53.0554170Z         "impl",
2026-06-21T23:05:53.0554266Z         "unit",
2026-06-21T23:05:53.0554376Z         "int"
2026-06-21T23:05:53.0554485Z       ],
2026-06-21T23:05:53.0554586Z       "stages": {
2026-06-21T23:05:53.0554691Z         "doc": {
2026-06-21T23:05:53.0554799Z           "complete": true,
2026-06-21T23:05:53.0554905Z           "evidence": [
2026-06-21T23:05:53.0555005Z             {
2026-06-21T23:05:53.0555128Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0555239Z               "line": 509
2026-06-21T23:05:53.0555343Z             },
2026-06-21T23:05:53.0555448Z             {
2026-06-21T23:05:53.0555564Z               "path": "docs/MANIFEST.md",
2026-06-21T23:05:53.0555681Z               "line": 123
2026-06-21T23:05:53.0555782Z             }
2026-06-21T23:05:53.0555893Z           ]
2026-06-21T23:05:53.0556001Z         },
2026-06-21T23:05:53.0556107Z         "impl": {
2026-06-21T23:05:53.0556222Z           "complete": true,
2026-06-21T23:05:53.0556330Z           "evidence": [
2026-06-21T23:05:53.0556439Z             {
2026-06-21T23:05:53.0556577Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0556694Z               "line": 287
2026-06-21T23:05:53.0556804Z             },
2026-06-21T23:05:53.0556905Z             {
2026-06-21T23:05:53.0557052Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0557148Z               "line": 301
2026-06-21T23:05:53.0557258Z             },
2026-06-21T23:05:53.0557357Z             {
2026-06-21T23:05:53.0557487Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0557601Z               "line": 326
2026-06-21T23:05:53.0557690Z             },
2026-06-21T23:05:53.0557801Z             {
2026-06-21T23:05:53.0557948Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0558068Z               "line": 239
2026-06-21T23:05:53.0558168Z             },
2026-06-21T23:05:53.0558273Z             {
2026-06-21T23:05:53.0558417Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0558516Z               "line": 95
2026-06-21T23:05:53.0558620Z             },
2026-06-21T23:05:53.0558717Z             {
2026-06-21T23:05:53.0558849Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0559023Z               "line": 2225
2026-06-21T23:05:53.0559118Z             },
2026-06-21T23:05:53.0559225Z             {
2026-06-21T23:05:53.0559345Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0559450Z               "line": 2274
2026-06-21T23:05:53.0559549Z             },
2026-06-21T23:05:53.0559669Z             {
2026-06-21T23:05:53.0559788Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0560018Z               "line": 2353
2026-06-21T23:05:53.0560122Z             },
2026-06-21T23:05:53.0560221Z             {
2026-06-21T23:05:53.0560432Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0560536Z               "line": 2392
2026-06-21T23:05:53.0560642Z             }
2026-06-21T23:05:53.0560742Z           ]
2026-06-21T23:05:53.0560841Z         },
2026-06-21T23:05:53.0560948Z         "int": {
2026-06-21T23:05:53.0561061Z           "complete": true,
2026-06-21T23:05:53.0561175Z           "evidence": [
2026-06-21T23:05:53.0561276Z             {
2026-06-21T23:05:53.0561428Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0561537Z               "line": 810
2026-06-21T23:05:53.0561637Z             },
2026-06-21T23:05:53.0561740Z             {
2026-06-21T23:05:53.0561882Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0561998Z               "line": 1345
2026-06-21T23:05:53.0562097Z             }
2026-06-21T23:05:53.0562197Z           ]
2026-06-21T23:05:53.0562303Z         },
2026-06-21T23:05:53.0562402Z         "unit": {
2026-06-21T23:05:53.0562516Z           "complete": true,
2026-06-21T23:05:53.0562622Z           "evidence": [
2026-06-21T23:05:53.0562731Z             {
2026-06-21T23:05:53.0562861Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0562970Z               "line": 1022
2026-06-21T23:05:53.0563075Z             },
2026-06-21T23:05:53.0563180Z             {
2026-06-21T23:05:53.0563318Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0563423Z               "line": 1090
2026-06-21T23:05:53.0563529Z             },
2026-06-21T23:05:53.0563632Z             {
2026-06-21T23:05:53.0563761Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0563873Z               "line": 8210
2026-06-21T23:05:53.0563966Z             },
2026-06-21T23:05:53.0564072Z             {
2026-06-21T23:05:53.0564187Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0564304Z               "line": 8265
2026-06-21T23:05:53.0564403Z             }
2026-06-21T23:05:53.0564509Z           ]
2026-06-21T23:05:53.0564617Z         }
2026-06-21T23:05:53.0564702Z       }
2026-06-21T23:05:53.0564807Z     },
2026-06-21T23:05:53.0564898Z     {
2026-06-21T23:05:53.0565012Z       "id": "REQ-PAIR-1",
2026-06-21T23:05:53.0565137Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T23:05:53.0565256Z       "requiredStages": [
2026-06-21T23:05:53.0565359Z         "impl",
2026-06-21T23:05:53.0565466Z         "unit",
2026-06-21T23:05:53.0565570Z         "int"
2026-06-21T23:05:53.0565674Z       ],
2026-06-21T23:05:53.0565785Z       "stages": {
2026-06-21T23:05:53.0569625Z         "doc": {
2026-06-21T23:05:53.0569800Z           "complete": false,
2026-06-21T23:05:53.0569914Z           "evidence": []
2026-06-21T23:05:53.0570015Z         },
2026-06-21T23:05:53.0570128Z         "impl": {
2026-06-21T23:05:53.0570239Z           "complete": true,
2026-06-21T23:05:53.0570353Z           "evidence": [
2026-06-21T23:05:53.0570467Z             {
2026-06-21T23:05:53.0570640Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:53.0570762Z               "line": 27
2026-06-21T23:05:53.0570858Z             },
2026-06-21T23:05:53.0570968Z             {
2026-06-21T23:05:53.0571130Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:53.0571246Z               "line": 88
2026-06-21T23:05:53.0571340Z             },
2026-06-21T23:05:53.0571445Z             {
2026-06-21T23:05:53.0571608Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:53.0571721Z               "line": 110
2026-06-21T23:05:53.0571827Z             },
2026-06-21T23:05:53.0571923Z             {
2026-06-21T23:05:53.0572078Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:53.0572188Z               "line": 153
2026-06-21T23:05:53.0572295Z             },
2026-06-21T23:05:53.0572400Z             {
2026-06-21T23:05:53.0572738Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:53.0572849Z               "line": 182
2026-06-21T23:05:53.0573053Z             },
2026-06-21T23:05:53.0573154Z             {
2026-06-21T23:05:53.0573310Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:05:53.0573406Z               "line": 29
2026-06-21T23:05:53.0573516Z             },
2026-06-21T23:05:53.0573616Z             {
2026-06-21T23:05:53.0573788Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:05:53.0573897Z               "line": 31
2026-06-21T23:05:53.0574002Z             },
2026-06-21T23:05:53.0574103Z             {
2026-06-21T23:05:53.0574255Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0574365Z               "line": 44
2026-06-21T23:05:53.0574465Z             },
2026-06-21T23:05:53.0574569Z             {
2026-06-21T23:05:53.0574718Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0574822Z               "line": 171
2026-06-21T23:05:53.0574926Z             },
2026-06-21T23:05:53.0575021Z             {
2026-06-21T23:05:53.0575172Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0575276Z               "line": 376
2026-06-21T23:05:53.0575382Z             }
2026-06-21T23:05:53.0575477Z           ]
2026-06-21T23:05:53.0575572Z         },
2026-06-21T23:05:53.0575663Z         "int": {
2026-06-21T23:05:53.0575773Z           "complete": true,
2026-06-21T23:05:53.0575887Z           "evidence": [
2026-06-21T23:05:53.0575982Z             {
2026-06-21T23:05:53.0576135Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0576244Z               "line": 645
2026-06-21T23:05:53.0576341Z             },
2026-06-21T23:05:53.0576440Z             {
2026-06-21T23:05:53.0576592Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0576707Z               "line": 887
2026-06-21T23:05:53.0576802Z             }
2026-06-21T23:05:53.0576912Z           ]
2026-06-21T23:05:53.0577008Z         },
2026-06-21T23:05:53.0577117Z         "unit": {
2026-06-21T23:05:53.0577217Z           "complete": true,
2026-06-21T23:05:53.0577323Z           "evidence": [
2026-06-21T23:05:53.0577427Z             {
2026-06-21T23:05:53.0577583Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:53.0577692Z               "line": 236
2026-06-21T23:05:53.0577791Z             },
2026-06-21T23:05:53.0577895Z             {
2026-06-21T23:05:53.0578045Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:05:53.0578162Z               "line": 349
2026-06-21T23:05:53.0578268Z             },
2026-06-21T23:05:53.0578363Z             {
2026-06-21T23:05:53.0578511Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:05:53.0578621Z               "line": 194
2026-06-21T23:05:53.0578726Z             },
2026-06-21T23:05:53.0578830Z             {
2026-06-21T23:05:53.0579055Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:05:53.0579174Z               "line": 216
2026-06-21T23:05:53.0579279Z             },
2026-06-21T23:05:53.0579374Z             {
2026-06-21T23:05:53.0579518Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:05:53.0579617Z               "line": 230
2026-06-21T23:05:53.0579722Z             },
2026-06-21T23:05:53.0579828Z             {
2026-06-21T23:05:53.0579965Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:05:53.0580065Z               "line": 242
2026-06-21T23:05:53.0580172Z             },
2026-06-21T23:05:53.0580266Z             {
2026-06-21T23:05:53.0580412Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:05:53.0580522Z               "line": 256
2026-06-21T23:05:53.0580623Z             },
2026-06-21T23:05:53.0580722Z             {
2026-06-21T23:05:53.0580862Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:05:53.0580971Z               "line": 270
2026-06-21T23:05:53.0581171Z             },
2026-06-21T23:05:53.0581281Z             {
2026-06-21T23:05:53.0581510Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:05:53.0581615Z               "line": 277
2026-06-21T23:05:53.0581719Z             },
2026-06-21T23:05:53.0581820Z             {
2026-06-21T23:05:53.0581967Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:05:53.0582078Z               "line": 295
2026-06-21T23:05:53.0582182Z             },
2026-06-21T23:05:53.0582282Z             {
2026-06-21T23:05:53.0582426Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0582534Z               "line": 968
2026-06-21T23:05:53.0582638Z             },
2026-06-21T23:05:53.0582738Z             {
2026-06-21T23:05:53.0582884Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0582997Z               "line": 1051
2026-06-21T23:05:53.0583099Z             },
2026-06-21T23:05:53.0583199Z             {
2026-06-21T23:05:53.0583351Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0583456Z               "line": 1121
2026-06-21T23:05:53.0583551Z             },
2026-06-21T23:05:53.0583646Z             {
2026-06-21T23:05:53.0583790Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0583899Z               "line": 1182
2026-06-21T23:05:53.0584000Z             },
2026-06-21T23:05:53.0584104Z             {
2026-06-21T23:05:53.0584237Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0584344Z               "line": 1238
2026-06-21T23:05:53.0584443Z             },
2026-06-21T23:05:53.0584538Z             {
2026-06-21T23:05:53.0584678Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0584781Z               "line": 1457
2026-06-21T23:05:53.0584886Z             }
2026-06-21T23:05:53.0584983Z           ]
2026-06-21T23:05:53.0585086Z         }
2026-06-21T23:05:53.0585201Z       }
2026-06-21T23:05:53.0585298Z     },
2026-06-21T23:05:53.0585401Z     {
2026-06-21T23:05:53.0585515Z       "id": "REQ-PAIR-2",
2026-06-21T23:05:53.0585677Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T23:05:53.0585789Z       "requiredStages": [],
2026-06-21T23:05:53.0585899Z       "stages": {
2026-06-21T23:05:53.0585999Z         "doc": {
2026-06-21T23:05:53.0586118Z           "complete": false,
2026-06-21T23:05:53.0586232Z           "evidence": []
2026-06-21T23:05:53.0586328Z         },
2026-06-21T23:05:53.0586437Z         "impl": {
2026-06-21T23:05:53.0586547Z           "complete": false,
2026-06-21T23:05:53.0586662Z           "evidence": []
2026-06-21T23:05:53.0586766Z         },
2026-06-21T23:05:53.0586867Z         "int": {
2026-06-21T23:05:53.0586981Z           "complete": false,
2026-06-21T23:05:53.0587091Z           "evidence": []
2026-06-21T23:05:53.0587196Z         },
2026-06-21T23:05:53.0587291Z         "unit": {
2026-06-21T23:05:53.0587405Z           "complete": false,
2026-06-21T23:05:53.0587521Z           "evidence": []
2026-06-21T23:05:53.0587620Z         }
2026-06-21T23:05:53.0587725Z       }
2026-06-21T23:05:53.0587826Z     },
2026-06-21T23:05:53.0587931Z     {
2026-06-21T23:05:53.0588034Z       "id": "REQ-PAIR-3",
2026-06-21T23:05:53.0588206Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T23:05:53.0588327Z       "requiredStages": [
2026-06-21T23:05:53.0588422Z         "impl",
2026-06-21T23:05:53.0588528Z         "unit"
2026-06-21T23:05:53.0588623Z       ],
2026-06-21T23:05:53.0588727Z       "stages": {
2026-06-21T23:05:53.0588829Z         "doc": {
2026-06-21T23:05:53.0589014Z           "complete": false,
2026-06-21T23:05:53.0589114Z           "evidence": []
2026-06-21T23:05:53.0589214Z         },
2026-06-21T23:05:53.0589323Z         "impl": {
2026-06-21T23:05:53.0589434Z           "complete": true,
2026-06-21T23:05:53.0589548Z           "evidence": [
2026-06-21T23:05:53.0589648Z             {
2026-06-21T23:05:53.0589886Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0589991Z               "line": 3259
2026-06-21T23:05:53.0590196Z             },
2026-06-21T23:05:53.0590301Z             {
2026-06-21T23:05:53.0590427Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0590534Z               "line": 3328
2026-06-21T23:05:53.0590626Z             },
2026-06-21T23:05:53.0590727Z             {
2026-06-21T23:05:53.0590854Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0590958Z               "line": 3709
2026-06-21T23:05:53.0591063Z             },
2026-06-21T23:05:53.0591164Z             {
2026-06-21T23:05:53.0591287Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0591392Z               "line": 4961
2026-06-21T23:05:53.0591498Z             }
2026-06-21T23:05:53.0591606Z           ]
2026-06-21T23:05:53.0591707Z         },
2026-06-21T23:05:53.0591812Z         "int": {
2026-06-21T23:05:53.0591916Z           "complete": false,
2026-06-21T23:05:53.0592022Z           "evidence": []
2026-06-21T23:05:53.0592126Z         },
2026-06-21T23:05:53.0592231Z         "unit": {
2026-06-21T23:05:53.0592342Z           "complete": true,
2026-06-21T23:05:53.0592446Z           "evidence": [
2026-06-21T23:05:53.0592546Z             {
2026-06-21T23:05:53.0592671Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0592780Z               "line": 9964
2026-06-21T23:05:53.0592879Z             },
2026-06-21T23:05:53.0592981Z             {
2026-06-21T23:05:53.0593104Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0593203Z               "line": 10179
2026-06-21T23:05:53.0593303Z             },
2026-06-21T23:05:53.0593402Z             {
2026-06-21T23:05:53.0593520Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0593625Z               "line": 10838
2026-06-21T23:05:53.0593727Z             },
2026-06-21T23:05:53.0593834Z             {
2026-06-21T23:05:53.0593954Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0594060Z               "line": 10857
2026-06-21T23:05:53.0594154Z             },
2026-06-21T23:05:53.0594255Z             {
2026-06-21T23:05:53.0594384Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0594492Z               "line": 10881
2026-06-21T23:05:53.0594599Z             },
2026-06-21T23:05:53.0594698Z             {
2026-06-21T23:05:53.0594822Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0594923Z               "line": 10900
2026-06-21T23:05:53.0595027Z             },
2026-06-21T23:05:53.0595127Z             {
2026-06-21T23:05:53.0595247Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0595350Z               "line": 10913
2026-06-21T23:05:53.0595446Z             },
2026-06-21T23:05:53.0595548Z             {
2026-06-21T23:05:53.0595670Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0595771Z               "line": 10922
2026-06-21T23:05:53.0595863Z             }
2026-06-21T23:05:53.0595971Z           ]
2026-06-21T23:05:53.0596075Z         }
2026-06-21T23:05:53.0596175Z       }
2026-06-21T23:05:53.0596283Z     },
2026-06-21T23:05:53.0596377Z     {
2026-06-21T23:05:53.0596487Z       "id": "REQ-PAIR-4",
2026-06-21T23:05:53.0596626Z       "title": "Subnet naming on first pairing",
2026-06-21T23:05:53.0596744Z       "requiredStages": [
2026-06-21T23:05:53.0596851Z         "impl",
2026-06-21T23:05:53.0596950Z         "unit"
2026-06-21T23:05:53.0597050Z       ],
2026-06-21T23:05:53.0597151Z       "stages": {
2026-06-21T23:05:53.0597261Z         "doc": {
2026-06-21T23:05:53.0597369Z           "complete": false,
2026-06-21T23:05:53.0597480Z           "evidence": []
2026-06-21T23:05:53.0597584Z         },
2026-06-21T23:05:53.0597689Z         "impl": {
2026-06-21T23:05:53.0597800Z           "complete": true,
2026-06-21T23:05:53.0597903Z           "evidence": [
2026-06-21T23:05:53.0598004Z             {
2026-06-21T23:05:53.0598139Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:05:53.0598242Z               "line": 174
2026-06-21T23:05:53.0598449Z             }
2026-06-21T23:05:53.0598551Z           ]
2026-06-21T23:05:53.0598650Z         },
2026-06-21T23:05:53.0598826Z         "int": {
2026-06-21T23:05:53.0599006Z           "complete": false,
2026-06-21T23:05:53.0599107Z           "evidence": []
2026-06-21T23:05:53.0599211Z         },
2026-06-21T23:05:53.0599311Z         "unit": {
2026-06-21T23:05:53.0599436Z           "complete": true,
2026-06-21T23:05:53.0599545Z           "evidence": [
2026-06-21T23:05:53.0599645Z             {
2026-06-21T23:05:53.0599803Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0599912Z               "line": 1294
2026-06-21T23:05:53.0600014Z             }
2026-06-21T23:05:53.0600113Z           ]
2026-06-21T23:05:53.0600212Z         }
2026-06-21T23:05:53.0600308Z       }
2026-06-21T23:05:53.0600408Z     },
2026-06-21T23:05:53.0600504Z     {
2026-06-21T23:05:53.0600614Z       "id": "REQ-PAIR-5",
2026-06-21T23:05:53.0600948Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T23:05:53.0601071Z       "requiredStages": [
2026-06-21T23:05:53.0601176Z         "impl",
2026-06-21T23:05:53.0601282Z         "unit",
2026-06-21T23:05:53.0601372Z         "int"
2026-06-21T23:05:53.0601476Z       ],
2026-06-21T23:05:53.0601575Z       "stages": {
2026-06-21T23:05:53.0601677Z         "doc": {
2026-06-21T23:05:53.0601786Z           "complete": false,
2026-06-21T23:05:53.0601890Z           "evidence": []
2026-06-21T23:05:53.0601996Z         },
2026-06-21T23:05:53.0602109Z         "impl": {
2026-06-21T23:05:53.0602219Z           "complete": true,
2026-06-21T23:05:53.0602325Z           "evidence": [
2026-06-21T23:05:53.0602429Z             {
2026-06-21T23:05:53.0602597Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:05:53.0602696Z               "line": 44
2026-06-21T23:05:53.0602800Z             },
2026-06-21T23:05:53.0602902Z             {
2026-06-21T23:05:53.0603049Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:05:53.0603154Z               "line": 96
2026-06-21T23:05:53.0603264Z             },
2026-06-21T23:05:53.0603368Z             {
2026-06-21T23:05:53.0603522Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:05:53.0603640Z               "line": 107
2026-06-21T23:05:53.0603730Z             },
2026-06-21T23:05:53.0603830Z             {
2026-06-21T23:05:53.0603981Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:05:53.0604085Z               "line": 124
2026-06-21T23:05:53.0604190Z             },
2026-06-21T23:05:53.0604287Z             {
2026-06-21T23:05:53.0604428Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:05:53.0604519Z               "line": 155
2026-06-21T23:05:53.0604620Z             },
2026-06-21T23:05:53.0604714Z             {
2026-06-21T23:05:53.0604854Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:05:53.0604963Z               "line": 195
2026-06-21T23:05:53.0605062Z             },
2026-06-21T23:05:53.0605173Z             {
2026-06-21T23:05:53.0605325Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:05:53.0605430Z               "line": 251
2026-06-21T23:05:53.0605530Z             },
2026-06-21T23:05:53.0605640Z             {
2026-06-21T23:05:53.0605803Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:05:53.0605915Z               "line": 33
2026-06-21T23:05:53.0606011Z             },
2026-06-21T23:05:53.0606108Z             {
2026-06-21T23:05:53.0606274Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:05:53.0606389Z               "line": 45
2026-06-21T23:05:53.0606489Z             },
2026-06-21T23:05:53.0606592Z             {
2026-06-21T23:05:53.0606749Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:05:53.0606858Z               "line": 59
2026-06-21T23:05:53.0606961Z             },
2026-06-21T23:05:53.0607177Z             {
2026-06-21T23:05:53.0607338Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0607529Z               "line": 376
2026-06-21T23:05:53.0607638Z             }
2026-06-21T23:05:53.0607726Z           ]
2026-06-21T23:05:53.0607835Z         },
2026-06-21T23:05:53.0607924Z         "int": {
2026-06-21T23:05:53.0608045Z           "complete": true,
2026-06-21T23:05:53.0608149Z           "evidence": [
2026-06-21T23:05:53.0608249Z             {
2026-06-21T23:05:53.0608393Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0608497Z               "line": 887
2026-06-21T23:05:53.0608602Z             },
2026-06-21T23:05:53.0608699Z             {
2026-06-21T23:05:53.0608850Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:05:53.0609032Z               "line": 342
2026-06-21T23:05:53.0609140Z             }
2026-06-21T23:05:53.0609234Z           ]
2026-06-21T23:05:53.0609331Z         },
2026-06-21T23:05:53.0609438Z         "unit": {
2026-06-21T23:05:53.0609551Z           "complete": true,
2026-06-21T23:05:53.0609662Z           "evidence": [
2026-06-21T23:05:53.0609762Z             {
2026-06-21T23:05:53.0609915Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:05:53.0610044Z               "line": 293
2026-06-21T23:05:53.0610148Z             },
2026-06-21T23:05:53.0610244Z             {
2026-06-21T23:05:53.0610387Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:05:53.0610491Z               "line": 304
2026-06-21T23:05:53.0610593Z             },
2026-06-21T23:05:53.0610692Z             {
2026-06-21T23:05:53.0610839Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:05:53.0610941Z               "line": 406
2026-06-21T23:05:53.0611045Z             },
2026-06-21T23:05:53.0611131Z             {
2026-06-21T23:05:53.0611297Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:05:53.0611460Z               "line": 72
2026-06-21T23:05:53.0611561Z             },
2026-06-21T23:05:53.0611664Z             {
2026-06-21T23:05:53.0611818Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:05:53.0611927Z               "line": 82
2026-06-21T23:05:53.0612026Z             },
2026-06-21T23:05:53.0612131Z             {
2026-06-21T23:05:53.0612308Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:05:53.0612431Z               "line": 100
2026-06-21T23:05:53.0612584Z             },
2026-06-21T23:05:53.0612731Z             {
2026-06-21T23:05:53.0612984Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:05:53.0613143Z               "line": 110
2026-06-21T23:05:53.0613299Z             },
2026-06-21T23:05:53.0613448Z             {
2026-06-21T23:05:53.0613614Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:05:53.0613729Z               "line": 125
2026-06-21T23:05:53.0613829Z             },
2026-06-21T23:05:53.0613933Z             {
2026-06-21T23:05:53.0614092Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0614200Z               "line": 1044
2026-06-21T23:05:53.0614294Z             },
2026-06-21T23:05:53.0614395Z             {
2026-06-21T23:05:53.0614550Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0614707Z               "line": 1110
2026-06-21T23:05:53.0614861Z             },
2026-06-21T23:05:53.0615007Z             {
2026-06-21T23:05:53.0615222Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.0615380Z               "line": 1357
2026-06-21T23:05:53.0615523Z             }
2026-06-21T23:05:53.0615781Z           ]
2026-06-21T23:05:53.0615927Z         }
2026-06-21T23:05:53.0616072Z       }
2026-06-21T23:05:53.0616256Z     },
2026-06-21T23:05:53.0616396Z     {
2026-06-21T23:05:53.0616591Z       "id": "REQ-PAIR-6",
2026-06-21T23:05:53.0617021Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T23:05:53.0617371Z       "requiredStages": [
2026-06-21T23:05:53.0617641Z         "impl",
2026-06-21T23:05:53.0617756Z         "unit"
2026-06-21T23:05:53.0617860Z       ],
2026-06-21T23:05:53.0617961Z       "stages": {
2026-06-21T23:05:53.0618062Z         "doc": {
2026-06-21T23:05:53.0618175Z           "complete": false,
2026-06-21T23:05:53.0618281Z           "evidence": []
2026-06-21T23:05:53.0618391Z         },
2026-06-21T23:05:53.0618494Z         "impl": {
2026-06-21T23:05:53.0618600Z           "complete": true,
2026-06-21T23:05:53.0618704Z           "evidence": [
2026-06-21T23:05:53.0618799Z             {
2026-06-21T23:05:53.0618934Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0619119Z               "line": 3328
2026-06-21T23:05:53.0619220Z             },
2026-06-21T23:05:53.0619320Z             {
2026-06-21T23:05:53.0619443Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0619554Z               "line": 3709
2026-06-21T23:05:53.0619658Z             },
2026-06-21T23:05:53.0619762Z             {
2026-06-21T23:05:53.0619900Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:53.0620007Z               "line": 18
2026-06-21T23:05:53.0620102Z             },
2026-06-21T23:05:53.0620198Z             {
2026-06-21T23:05:53.0620336Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:53.0620436Z               "line": 49
2026-06-21T23:05:53.0620538Z             },
2026-06-21T23:05:53.0620637Z             {
2026-06-21T23:05:53.0620765Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:53.0620871Z               "line": 318
2026-06-21T23:05:53.0620976Z             }
2026-06-21T23:05:53.0621080Z           ]
2026-06-21T23:05:53.0621172Z         },
2026-06-21T23:05:53.0621266Z         "int": {
2026-06-21T23:05:53.0621376Z           "complete": false,
2026-06-21T23:05:53.0621477Z           "evidence": []
2026-06-21T23:05:53.0621562Z         },
2026-06-21T23:05:53.0621667Z         "unit": {
2026-06-21T23:05:53.0621792Z           "complete": true,
2026-06-21T23:05:53.0621900Z           "evidence": [
2026-06-21T23:05:53.0622020Z             {
2026-06-21T23:05:53.0622159Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0622268Z               "line": 10935
2026-06-21T23:05:53.0622369Z             },
2026-06-21T23:05:53.0622474Z             {
2026-06-21T23:05:53.0622596Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0622705Z               "line": 10952
2026-06-21T23:05:53.0622806Z             },
2026-06-21T23:05:53.0622906Z             {
2026-06-21T23:05:53.0623034Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:53.0623135Z               "line": 383
2026-06-21T23:05:53.0623239Z             },
2026-06-21T23:05:53.0623340Z             {
2026-06-21T23:05:53.0623459Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:05:53.0623558Z               "line": 392
2026-06-21T23:05:53.0623645Z             }
2026-06-21T23:05:53.0623750Z           ]
2026-06-21T23:05:53.0623850Z         }
2026-06-21T23:05:53.0623954Z       }
2026-06-21T23:05:53.0624060Z     },
2026-06-21T23:05:53.0624160Z     {
2026-06-21T23:05:53.0624279Z       "id": "REQ-PAIR-7",
2026-06-21T23:05:53.0624460Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T23:05:53.0624574Z       "requiredStages": [],
2026-06-21T23:05:53.0624676Z       "stages": {
2026-06-21T23:05:53.0624784Z         "doc": {
2026-06-21T23:05:53.0624888Z           "complete": false,
2026-06-21T23:05:53.0624989Z           "evidence": []
2026-06-21T23:05:53.0625096Z         },
2026-06-21T23:05:53.0625195Z         "impl": {
2026-06-21T23:05:53.0625301Z           "complete": false,
2026-06-21T23:05:53.0625407Z           "evidence": []
2026-06-21T23:05:53.0625515Z         },
2026-06-21T23:05:53.0625621Z         "int": {
2026-06-21T23:05:53.0625721Z           "complete": false,
2026-06-21T23:05:53.0625820Z           "evidence": []
2026-06-21T23:05:53.0626036Z         },
2026-06-21T23:05:53.0626140Z         "unit": {
2026-06-21T23:05:53.0626246Z           "complete": false,
2026-06-21T23:05:53.0626454Z           "evidence": []
2026-06-21T23:05:53.0626560Z         }
2026-06-21T23:05:53.0626655Z       }
2026-06-21T23:05:53.0626760Z     },
2026-06-21T23:05:53.0626856Z     {
2026-06-21T23:05:53.0626965Z       "id": "REQ-PAIR-8",
2026-06-21T23:05:53.0629170Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T23:05:53.0629341Z       "requiredStages": [
2026-06-21T23:05:53.0629442Z         "impl",
2026-06-21T23:05:53.0629542Z         "unit"
2026-06-21T23:05:53.0629665Z       ],
2026-06-21T23:05:53.0629767Z       "stages": {
2026-06-21T23:05:53.0629866Z         "doc": {
2026-06-21T23:05:53.0629984Z           "complete": false,
2026-06-21T23:05:53.0630086Z           "evidence": []
2026-06-21T23:05:53.0630190Z         },
2026-06-21T23:05:53.0630279Z         "impl": {
2026-06-21T23:05:53.0630384Z           "complete": true,
2026-06-21T23:05:53.0630489Z           "evidence": [
2026-06-21T23:05:53.0630582Z             {
2026-06-21T23:05:53.0630735Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.0630831Z               "line": 577
2026-06-21T23:05:53.0630934Z             },
2026-06-21T23:05:53.0631020Z             {
2026-06-21T23:05:53.0631169Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:05:53.0631278Z               "line": 22
2026-06-21T23:05:53.0631369Z             },
2026-06-21T23:05:53.0631474Z             {
2026-06-21T23:05:53.0631602Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:05:53.0631708Z               "line": 76
2026-06-21T23:05:53.0631812Z             },
2026-06-21T23:05:53.0631917Z             {
2026-06-21T23:05:53.0632052Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:05:53.0632156Z               "line": 127
2026-06-21T23:05:53.0632251Z             }
2026-06-21T23:05:53.0632347Z           ]
2026-06-21T23:05:53.0632437Z         },
2026-06-21T23:05:53.0632604Z         "int": {
2026-06-21T23:05:53.0632719Z           "complete": false,
2026-06-21T23:05:53.0632818Z           "evidence": []
2026-06-21T23:05:53.0632905Z         },
2026-06-21T23:05:53.0633010Z         "unit": {
2026-06-21T23:05:53.0633118Z           "complete": true,
2026-06-21T23:05:53.0633217Z           "evidence": [
2026-06-21T23:05:53.0633309Z             {
2026-06-21T23:05:53.0633451Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:05:53.0633561Z               "line": 183
2026-06-21T23:05:53.0633653Z             },
2026-06-21T23:05:53.0633748Z             {
2026-06-21T23:05:53.0633880Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:05:53.0633995Z               "line": 195
2026-06-21T23:05:53.0634095Z             },
2026-06-21T23:05:53.0634200Z             {
2026-06-21T23:05:53.0634338Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:05:53.0634438Z               "line": 211
2026-06-21T23:05:53.0634544Z             },
2026-06-21T23:05:53.0634635Z             {
2026-06-21T23:05:53.0634772Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:05:53.0634878Z               "line": 227
2026-06-21T23:05:53.0634968Z             }
2026-06-21T23:05:53.0635072Z           ]
2026-06-21T23:05:53.0635163Z         }
2026-06-21T23:05:53.0635265Z       }
2026-06-21T23:05:53.0635363Z     },
2026-06-21T23:05:53.0635467Z     {
2026-06-21T23:05:53.0635568Z       "id": "REQ-PICKER-1",
2026-06-21T23:05:53.0639191Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T23:05:53.0639687Z       "requiredStages": [
2026-06-21T23:05:53.0639806Z         "impl",
2026-06-21T23:05:53.0639910Z         "unit"
2026-06-21T23:05:53.0640017Z       ],
2026-06-21T23:05:53.0640130Z       "stages": {
2026-06-21T23:05:53.0640234Z         "doc": {
2026-06-21T23:05:53.0640360Z           "complete": false,
2026-06-21T23:05:53.0640463Z           "evidence": []
2026-06-21T23:05:53.0640583Z         },
2026-06-21T23:05:53.0640684Z         "impl": {
2026-06-21T23:05:53.0640792Z           "complete": true,
2026-06-21T23:05:53.0640901Z           "evidence": [
2026-06-21T23:05:53.0640992Z             {
2026-06-21T23:05:53.0641133Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.0641237Z               "line": 248
2026-06-21T23:05:53.0641338Z             },
2026-06-21T23:05:53.0641434Z             {
2026-06-21T23:05:53.0641571Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0641682Z               "line": 263
2026-06-21T23:05:53.0641786Z             }
2026-06-21T23:05:53.0641890Z           ]
2026-06-21T23:05:53.0641991Z         },
2026-06-21T23:05:53.0642082Z         "int": {
2026-06-21T23:05:53.0642191Z           "complete": false,
2026-06-21T23:05:53.0642297Z           "evidence": []
2026-06-21T23:05:53.0642391Z         },
2026-06-21T23:05:53.0642496Z         "unit": {
2026-06-21T23:05:53.0642612Z           "complete": true,
2026-06-21T23:05:53.0642716Z           "evidence": [
2026-06-21T23:05:53.0642816Z             {
2026-06-21T23:05:53.0642941Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:53.0643049Z               "line": 476
2026-06-21T23:05:53.0643150Z             },
2026-06-21T23:05:53.0643246Z             {
2026-06-21T23:05:53.0643378Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.0643484Z               "line": 753
2026-06-21T23:05:53.0643590Z             },
2026-06-21T23:05:53.0643687Z             {
2026-06-21T23:05:53.0643821Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0643917Z               "line": 886
2026-06-21T23:05:53.0644021Z             },
2026-06-21T23:05:53.0644121Z             {
2026-06-21T23:05:53.0644241Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:05:53.0644350Z               "line": 455
2026-06-21T23:05:53.0644440Z             }
2026-06-21T23:05:53.0644542Z           ]
2026-06-21T23:05:53.0644642Z         }
2026-06-21T23:05:53.0644736Z       }
2026-06-21T23:05:53.0644842Z     },
2026-06-21T23:05:53.0644932Z     {
2026-06-21T23:05:53.0645041Z       "id": "REQ-PICKER-2",
2026-06-21T23:05:53.0646931Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T23:05:53.0647212Z       "requiredStages": [
2026-06-21T23:05:53.0647322Z         "impl",
2026-06-21T23:05:53.0647423Z         "unit"
2026-06-21T23:05:53.0647523Z       ],
2026-06-21T23:05:53.0647627Z       "stages": {
2026-06-21T23:05:53.0647729Z         "doc": {
2026-06-21T23:05:53.0647838Z           "complete": false,
2026-06-21T23:05:53.0647937Z           "evidence": []
2026-06-21T23:05:53.0648039Z         },
2026-06-21T23:05:53.0648142Z         "impl": {
2026-06-21T23:05:53.0648242Z           "complete": true,
2026-06-21T23:05:53.0648344Z           "evidence": [
2026-06-21T23:05:53.0648433Z             {
2026-06-21T23:05:53.0648581Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.0648687Z               "line": 183
2026-06-21T23:05:53.0648790Z             },
2026-06-21T23:05:53.0648889Z             {
2026-06-21T23:05:53.0649131Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:05:53.0649240Z               "line": 296
2026-06-21T23:05:53.0649322Z             }
2026-06-21T23:05:53.0649436Z           ]
2026-06-21T23:05:53.0649535Z         },
2026-06-21T23:05:53.0649637Z         "int": {
2026-06-21T23:05:53.0649737Z           "complete": false,
2026-06-21T23:05:53.0649845Z           "evidence": []
2026-06-21T23:05:53.0649943Z         },
2026-06-21T23:05:53.0650037Z         "unit": {
2026-06-21T23:05:53.0650151Z           "complete": true,
2026-06-21T23:05:53.0650257Z           "evidence": [
2026-06-21T23:05:53.0650366Z             {
2026-06-21T23:05:53.0650504Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.0650610Z               "line": 655
2026-06-21T23:05:53.0650714Z             }
2026-06-21T23:05:53.0650809Z           ]
2026-06-21T23:05:53.0650915Z         }
2026-06-21T23:05:53.0651019Z       }
2026-06-21T23:05:53.0651115Z     },
2026-06-21T23:05:53.0655765Z     {
2026-06-21T23:05:53.0655916Z       "id": "REQ-PICKER-3",
2026-06-21T23:05:53.0658393Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T23:05:53.0658531Z       "requiredStages": [
2026-06-21T23:05:53.0658641Z         "impl",
2026-06-21T23:05:53.0658745Z         "unit"
2026-06-21T23:05:53.0658851Z       ],
2026-06-21T23:05:53.0659060Z       "stages": {
2026-06-21T23:05:53.0659166Z         "doc": {
2026-06-21T23:05:53.0659294Z           "complete": false,
2026-06-21T23:05:53.0659388Z           "evidence": []
2026-06-21T23:05:53.0659493Z         },
2026-06-21T23:05:53.0659588Z         "impl": {
2026-06-21T23:05:53.0659734Z           "complete": true,
2026-06-21T23:05:53.0659839Z           "evidence": [
2026-06-21T23:05:53.0659944Z             {
2026-06-21T23:05:53.0660077Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:05:53.0660183Z               "line": 124
2026-06-21T23:05:53.0660288Z             }
2026-06-21T23:05:53.0660382Z           ]
2026-06-21T23:05:53.0660483Z         },
2026-06-21T23:05:53.0660573Z         "int": {
2026-06-21T23:05:53.0660682Z           "complete": false,
2026-06-21T23:05:53.0660950Z           "evidence": []
2026-06-21T23:05:53.0661040Z         },
2026-06-21T23:05:53.0661226Z         "unit": {
2026-06-21T23:05:53.0661331Z           "complete": true,
2026-06-21T23:05:53.0661442Z           "evidence": [
2026-06-21T23:05:53.0661537Z             {
2026-06-21T23:05:53.0661670Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:05:53.0661766Z               "line": 369
2026-06-21T23:05:53.0661856Z             }
2026-06-21T23:05:53.0661955Z           ]
2026-06-21T23:05:53.0662050Z         }
2026-06-21T23:05:53.0662141Z       }
2026-06-21T23:05:53.0662229Z     },
2026-06-21T23:05:53.0662324Z     {
2026-06-21T23:05:53.0662439Z       "id": "REQ-PICKER-4",
2026-06-21T23:05:53.0664338Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T23:05:53.0664479Z       "requiredStages": [
2026-06-21T23:05:53.0664580Z         "impl",
2026-06-21T23:05:53.0664681Z         "unit"
2026-06-21T23:05:53.0664780Z       ],
2026-06-21T23:05:53.0664879Z       "stages": {
2026-06-21T23:05:53.0664975Z         "doc": {
2026-06-21T23:05:53.0665081Z           "complete": false,
2026-06-21T23:05:53.0665188Z           "evidence": []
2026-06-21T23:05:53.0665285Z         },
2026-06-21T23:05:53.0665380Z         "impl": {
2026-06-21T23:05:53.0665485Z           "complete": true,
2026-06-21T23:05:53.0665585Z           "evidence": [
2026-06-21T23:05:53.0665690Z             {
2026-06-21T23:05:53.0665832Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0665943Z               "line": 353
2026-06-21T23:05:53.0666047Z             },
2026-06-21T23:05:53.0666147Z             {
2026-06-21T23:05:53.0666282Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:05:53.0666381Z               "line": 105
2026-06-21T23:05:53.0666481Z             }
2026-06-21T23:05:53.0666578Z           ]
2026-06-21T23:05:53.0666682Z         },
2026-06-21T23:05:53.0666782Z         "int": {
2026-06-21T23:05:53.0666883Z           "complete": false,
2026-06-21T23:05:53.0666996Z           "evidence": []
2026-06-21T23:05:53.0667091Z         },
2026-06-21T23:05:53.0667200Z         "unit": {
2026-06-21T23:05:53.0667305Z           "complete": true,
2026-06-21T23:05:53.0667412Z           "evidence": [
2026-06-21T23:05:53.0667513Z             {
2026-06-21T23:05:53.0667652Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0667760Z               "line": 1246
2026-06-21T23:05:53.0667861Z             },
2026-06-21T23:05:53.0667951Z             {
2026-06-21T23:05:53.0668084Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:05:53.0668191Z               "line": 427
2026-06-21T23:05:53.0668295Z             }
2026-06-21T23:05:53.0668385Z           ]
2026-06-21T23:05:53.0668481Z         }
2026-06-21T23:05:53.0668576Z       }
2026-06-21T23:05:53.0668676Z     },
2026-06-21T23:05:53.0668766Z     {
2026-06-21T23:05:53.0668873Z       "id": "REQ-PICKER-5",
2026-06-21T23:05:53.0671948Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T23:05:53.0672789Z       "requiredStages": [
2026-06-21T23:05:53.0672893Z         "impl",
2026-06-21T23:05:53.0672999Z         "unit"
2026-06-21T23:05:53.0673095Z       ],
2026-06-21T23:05:53.0673199Z       "stages": {
2026-06-21T23:05:53.0673300Z         "doc": {
2026-06-21T23:05:53.0673410Z           "complete": false,
2026-06-21T23:05:53.0673509Z           "evidence": []
2026-06-21T23:05:53.0673600Z         },
2026-06-21T23:05:53.0673710Z         "impl": {
2026-06-21T23:05:53.0673809Z           "complete": true,
2026-06-21T23:05:53.0673910Z           "evidence": [
2026-06-21T23:05:53.0674015Z             {
2026-06-21T23:05:53.0674138Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0674244Z               "line": 1802
2026-06-21T23:05:53.0674344Z             }
2026-06-21T23:05:53.0674434Z           ]
2026-06-21T23:05:53.0674530Z         },
2026-06-21T23:05:53.0674621Z         "int": {
2026-06-21T23:05:53.0674725Z           "complete": false,
2026-06-21T23:05:53.0674835Z           "evidence": []
2026-06-21T23:05:53.0674936Z         },
2026-06-21T23:05:53.0675025Z         "unit": {
2026-06-21T23:05:53.0675135Z           "complete": true,
2026-06-21T23:05:53.0675237Z           "evidence": [
2026-06-21T23:05:53.0675340Z             {
2026-06-21T23:05:53.0675453Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0675563Z               "line": 7526
2026-06-21T23:05:53.0675664Z             }
2026-06-21T23:05:53.0675763Z           ]
2026-06-21T23:05:53.0675864Z         }
2026-06-21T23:05:53.0675964Z       }
2026-06-21T23:05:53.0676078Z     },
2026-06-21T23:05:53.0676170Z     {
2026-06-21T23:05:53.0676308Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T23:05:53.0677684Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T23:05:53.0677798Z       "requiredStages": [],
2026-06-21T23:05:53.0677907Z       "stages": {
2026-06-21T23:05:53.0678006Z         "doc": {
2026-06-21T23:05:53.0678106Z           "complete": false,
2026-06-21T23:05:53.0678212Z           "evidence": []
2026-06-21T23:05:53.0678315Z         },
2026-06-21T23:05:53.0678421Z         "impl": {
2026-06-21T23:05:53.0678541Z           "complete": false,
2026-06-21T23:05:53.0678649Z           "evidence": []
2026-06-21T23:05:53.0678751Z         },
2026-06-21T23:05:53.0678850Z         "int": {
2026-06-21T23:05:53.0679027Z           "complete": false,
2026-06-21T23:05:53.0679132Z           "evidence": []
2026-06-21T23:05:53.0679227Z         },
2026-06-21T23:05:53.0679341Z         "unit": {
2026-06-21T23:05:53.0679451Z           "complete": false,
2026-06-21T23:05:53.0679570Z           "evidence": []
2026-06-21T23:05:53.0679666Z         }
2026-06-21T23:05:53.0679771Z       }
2026-06-21T23:05:53.0679861Z     },
2026-06-21T23:05:53.0679957Z     {
2026-06-21T23:05:53.0680077Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T23:05:53.0681187Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T23:05:53.0681483Z       "requiredStages": [
2026-06-21T23:05:53.0681574Z         "impl",
2026-06-21T23:05:53.0681680Z         "unit"
2026-06-21T23:05:53.0681765Z       ],
2026-06-21T23:05:53.0681865Z       "stages": {
2026-06-21T23:05:53.0681966Z         "doc": {
2026-06-21T23:05:53.0682065Z           "complete": false,
2026-06-21T23:05:53.0682175Z           "evidence": []
2026-06-21T23:05:53.0682267Z         },
2026-06-21T23:05:53.0682370Z         "impl": {
2026-06-21T23:05:53.0682475Z           "complete": true,
2026-06-21T23:05:53.0682572Z           "evidence": [
2026-06-21T23:05:53.0682676Z             {
2026-06-21T23:05:53.0682809Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:05:53.0682915Z               "line": 275
2026-06-21T23:05:53.0683014Z             }
2026-06-21T23:05:53.0683123Z           ]
2026-06-21T23:05:53.0683218Z         },
2026-06-21T23:05:53.0683322Z         "int": {
2026-06-21T23:05:53.0683425Z           "complete": false,
2026-06-21T23:05:53.0683525Z           "evidence": []
2026-06-21T23:05:53.0683632Z         },
2026-06-21T23:05:53.0683721Z         "unit": {
2026-06-21T23:05:53.0683826Z           "complete": true,
2026-06-21T23:05:53.0683936Z           "evidence": [
2026-06-21T23:05:53.0684040Z             {
2026-06-21T23:05:53.0684180Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:05:53.0684279Z               "line": 400
2026-06-21T23:05:53.0684384Z             }
2026-06-21T23:05:53.0684475Z           ]
2026-06-21T23:05:53.0684575Z         }
2026-06-21T23:05:53.0684670Z       }
2026-06-21T23:05:53.0684770Z     },
2026-06-21T23:05:53.0684871Z     {
2026-06-21T23:05:53.0684994Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T23:05:53.0686544Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T23:05:53.0686676Z       "requiredStages": [
2026-06-21T23:05:53.0686782Z         "impl",
2026-06-21T23:05:53.0686887Z         "unit"
2026-06-21T23:05:53.0686986Z       ],
2026-06-21T23:05:53.0687087Z       "stages": {
2026-06-21T23:05:53.0687182Z         "doc": {
2026-06-21T23:05:53.0687296Z           "complete": false,
2026-06-21T23:05:53.0687398Z           "evidence": []
2026-06-21T23:05:53.0687502Z         },
2026-06-21T23:05:53.0687597Z         "impl": {
2026-06-21T23:05:53.0687698Z           "complete": true,
2026-06-21T23:05:53.0687807Z           "evidence": [
2026-06-21T23:05:53.0687897Z             {
2026-06-21T23:05:53.0688032Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0688135Z               "line": 654
2026-06-21T23:05:53.0688244Z             }
2026-06-21T23:05:53.0688345Z           ]
2026-06-21T23:05:53.0688434Z         },
2026-06-21T23:05:53.0688537Z         "int": {
2026-06-21T23:05:53.0688647Z           "complete": false,
2026-06-21T23:05:53.0688758Z           "evidence": []
2026-06-21T23:05:53.0688852Z         },
2026-06-21T23:05:53.0689134Z         "unit": {
2026-06-21T23:05:53.0689262Z           "complete": true,
2026-06-21T23:05:53.0689377Z           "evidence": [
2026-06-21T23:05:53.0689472Z             {
2026-06-21T23:05:53.0689602Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0689706Z               "line": 1078
2026-06-21T23:05:53.0689806Z             },
2026-06-21T23:05:53.0689911Z             {
2026-06-21T23:05:53.0690040Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0690260Z               "line": 1092
2026-06-21T23:05:53.0690369Z             }
2026-06-21T23:05:53.0690551Z           ]
2026-06-21T23:05:53.0690646Z         }
2026-06-21T23:05:53.0690735Z       }
2026-06-21T23:05:53.0690832Z     },
2026-06-21T23:05:53.0690932Z     {
2026-06-21T23:05:53.0691036Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T23:05:53.0692620Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T23:05:53.0692740Z       "requiredStages": [],
2026-06-21T23:05:53.0692846Z       "stages": {
2026-06-21T23:05:53.0692949Z         "doc": {
2026-06-21T23:05:53.0693064Z           "complete": false,
2026-06-21T23:05:53.0693175Z           "evidence": []
2026-06-21T23:05:53.0693273Z         },
2026-06-21T23:05:53.0693384Z         "impl": {
2026-06-21T23:05:53.0693490Z           "complete": false,
2026-06-21T23:05:53.0693583Z           "evidence": []
2026-06-21T23:05:53.0693678Z         },
2026-06-21T23:05:53.0693778Z         "int": {
2026-06-21T23:05:53.0693873Z           "complete": false,
2026-06-21T23:05:53.0693971Z           "evidence": []
2026-06-21T23:05:53.0694067Z         },
2026-06-21T23:05:53.0694172Z         "unit": {
2026-06-21T23:05:53.0694276Z           "complete": false,
2026-06-21T23:05:53.0694386Z           "evidence": []
2026-06-21T23:05:53.0694482Z         }
2026-06-21T23:05:53.0694582Z       }
2026-06-21T23:05:53.0694676Z     },
2026-06-21T23:05:53.0694783Z     {
2026-06-21T23:05:53.0694897Z       "id": "REQ-PRES-1",
2026-06-21T23:05:53.0696217Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T23:05:53.0696333Z       "requiredStages": [
2026-06-21T23:05:53.0696437Z         "impl",
2026-06-21T23:05:53.0696541Z         "unit",
2026-06-21T23:05:53.0696650Z         "int"
2026-06-21T23:05:53.0696747Z       ],
2026-06-21T23:05:53.0696855Z       "stages": {
2026-06-21T23:05:53.0696955Z         "doc": {
2026-06-21T23:05:53.0697065Z           "complete": true,
2026-06-21T23:05:53.0697165Z           "evidence": [
2026-06-21T23:05:53.0697270Z             {
2026-06-21T23:05:53.0697399Z               "path": "docs/DEFERRED.md",
2026-06-21T23:05:53.0697503Z               "line": 11
2026-06-21T23:05:53.0697604Z             }
2026-06-21T23:05:53.0697699Z           ]
2026-06-21T23:05:53.0697804Z         },
2026-06-21T23:05:53.0697900Z         "impl": {
2026-06-21T23:05:53.0698000Z           "complete": true,
2026-06-21T23:05:53.0698109Z           "evidence": [
2026-06-21T23:05:53.0698210Z             {
2026-06-21T23:05:53.0698357Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:53.0698462Z               "line": 515
2026-06-21T23:05:53.0698568Z             },
2026-06-21T23:05:53.0698658Z             {
2026-06-21T23:05:53.0698790Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:53.0698895Z               "line": 567
2026-06-21T23:05:53.0699074Z             },
2026-06-21T23:05:53.0699174Z             {
2026-06-21T23:05:53.0699308Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0699417Z               "line": 188
2026-06-21T23:05:53.0699512Z             },
2026-06-21T23:05:53.0699717Z             {
2026-06-21T23:05:53.0699852Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0700037Z               "line": 214
2026-06-21T23:05:53.0700142Z             },
2026-06-21T23:05:53.0700238Z             {
2026-06-21T23:05:53.0700366Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:05:53.0700471Z               "line": 28
2026-06-21T23:05:53.0700562Z             },
2026-06-21T23:05:53.0700657Z             {
2026-06-21T23:05:53.0700781Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:05:53.0700891Z               "line": 105
2026-06-21T23:05:53.0700986Z             },
2026-06-21T23:05:53.0701082Z             {
2026-06-21T23:05:53.0701211Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:05:53.0701315Z               "line": 161
2026-06-21T23:05:53.0701421Z             },
2026-06-21T23:05:53.0701516Z             {
2026-06-21T23:05:53.0701643Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:05:53.0701752Z               "line": 180
2026-06-21T23:05:53.0701852Z             },
2026-06-21T23:05:53.0701951Z             {
2026-06-21T23:05:53.0702094Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0702194Z               "line": 421
2026-06-21T23:05:53.0702293Z             },
2026-06-21T23:05:53.0702394Z             {
2026-06-21T23:05:53.0702528Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0702627Z               "line": 289
2026-06-21T23:05:53.0702724Z             },
2026-06-21T23:05:53.0702819Z             {
2026-06-21T23:05:53.0702951Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0703053Z               "line": 336
2026-06-21T23:05:53.0703157Z             },
2026-06-21T23:05:53.0703252Z             {
2026-06-21T23:05:53.0703391Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0703495Z               "line": 362
2026-06-21T23:05:53.0703590Z             },
2026-06-21T23:05:53.0703697Z             {
2026-06-21T23:05:53.0703829Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0703939Z               "line": 100
2026-06-21T23:05:53.0704035Z             }
2026-06-21T23:05:53.0704139Z           ]
2026-06-21T23:05:53.0704252Z         },
2026-06-21T23:05:53.0704338Z         "int": {
2026-06-21T23:05:53.0704456Z           "complete": true,
2026-06-21T23:05:53.0704584Z           "evidence": [
2026-06-21T23:05:53.0704670Z             {
2026-06-21T23:05:53.0704799Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:53.0704898Z               "line": 563
2026-06-21T23:05:53.0704985Z             },
2026-06-21T23:05:53.0705066Z             {
2026-06-21T23:05:53.0705194Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0705271Z               "line": 747
2026-06-21T23:05:53.0705371Z             },
2026-06-21T23:05:53.0705457Z             {
2026-06-21T23:05:53.0705581Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0705686Z               "line": 1165
2026-06-21T23:05:53.0705762Z             }
2026-06-21T23:05:53.0705852Z           ]
2026-06-21T23:05:53.0705929Z         },
2026-06-21T23:05:53.0706024Z         "unit": {
2026-06-21T23:05:53.0706115Z           "complete": true,
2026-06-21T23:05:53.0706205Z           "evidence": [
2026-06-21T23:05:53.0706292Z             {
2026-06-21T23:05:53.0706410Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.0706511Z               "line": 674
2026-06-21T23:05:53.0706593Z             },
2026-06-21T23:05:53.0706677Z             {
2026-06-21T23:05:53.0706801Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:05:53.0706893Z               "line": 238
2026-06-21T23:05:53.0706974Z             },
2026-06-21T23:05:53.0707053Z             {
2026-06-21T23:05:53.0707177Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:05:53.0707259Z               "line": 269
2026-06-21T23:05:53.0707434Z             },
2026-06-21T23:05:53.0707520Z             {
2026-06-21T23:05:53.0707630Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:05:53.0707801Z               "line": 305
2026-06-21T23:05:53.0707874Z             },
2026-06-21T23:05:53.0707964Z             {
2026-06-21T23:05:53.0708078Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:05:53.0708164Z               "line": 336
2026-06-21T23:05:53.0708255Z             },
2026-06-21T23:05:53.0708340Z             {
2026-06-21T23:05:53.0708465Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.0708546Z               "line": 1217
2026-06-21T23:05:53.0708631Z             },
2026-06-21T23:05:53.0708712Z             {
2026-06-21T23:05:53.0708828Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.0708913Z               "line": 1163
2026-06-21T23:05:53.0709075Z             }
2026-06-21T23:05:53.0709162Z           ]
2026-06-21T23:05:53.0709255Z         }
2026-06-21T23:05:53.0709341Z       }
2026-06-21T23:05:53.0709422Z     },
2026-06-21T23:05:53.0709507Z     {
2026-06-21T23:05:53.0709601Z       "id": "REQ-RC-1",
2026-06-21T23:05:53.0711561Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T23:05:53.0711666Z       "requiredStages": [
2026-06-21T23:05:53.0711752Z         "impl",
2026-06-21T23:05:53.0711841Z         "unit",
2026-06-21T23:05:53.0711928Z         "int"
2026-06-21T23:05:53.0712010Z       ],
2026-06-21T23:05:53.0712100Z       "stages": {
2026-06-21T23:05:53.0712184Z         "doc": {
2026-06-21T23:05:53.0712289Z           "complete": false,
2026-06-21T23:05:53.0712384Z           "evidence": []
2026-06-21T23:05:53.0712473Z         },
2026-06-21T23:05:53.0712558Z         "impl": {
2026-06-21T23:05:53.0712654Z           "complete": true,
2026-06-21T23:05:53.0712740Z           "evidence": [
2026-06-21T23:05:53.0712821Z             {
2026-06-21T23:05:53.0712940Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:53.0713026Z               "line": 1038
2026-06-21T23:05:53.0713112Z             },
2026-06-21T23:05:53.0713201Z             {
2026-06-21T23:05:53.0713317Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:53.0713403Z               "line": 2177
2026-06-21T23:05:53.0713483Z             },
2026-06-21T23:05:53.0713574Z             {
2026-06-21T23:05:53.0713698Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.0713784Z               "line": 1017
2026-06-21T23:05:53.0713874Z             },
2026-06-21T23:05:53.0713961Z             {
2026-06-21T23:05:53.0714074Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.0714160Z               "line": 1051
2026-06-21T23:05:53.0714238Z             },
2026-06-21T23:05:53.0714328Z             {
2026-06-21T23:05:53.0714437Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0714528Z               "line": 22
2026-06-21T23:05:53.0714610Z             },
2026-06-21T23:05:53.0714695Z             {
2026-06-21T23:05:53.0714794Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0714879Z               "line": 701
2026-06-21T23:05:53.0714970Z             }
2026-06-21T23:05:53.0715054Z           ]
2026-06-21T23:05:53.0715139Z         },
2026-06-21T23:05:53.0715225Z         "int": {
2026-06-21T23:05:53.0715322Z           "complete": true,
2026-06-21T23:05:53.0715511Z           "evidence": [
2026-06-21T23:05:53.0715598Z             {
2026-06-21T23:05:53.0715811Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:53.0715894Z               "line": 261
2026-06-21T23:05:53.0715989Z             },
2026-06-21T23:05:53.0716068Z             {
2026-06-21T23:05:53.0716189Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:53.0716270Z               "line": 288
2026-06-21T23:05:53.0716398Z             },
2026-06-21T23:05:53.0716490Z             {
2026-06-21T23:05:53.0716608Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:53.0716698Z               "line": 416
2026-06-21T23:05:53.0716775Z             }
2026-06-21T23:05:53.0716857Z           ]
2026-06-21T23:05:53.0716941Z         },
2026-06-21T23:05:53.0717027Z         "unit": {
2026-06-21T23:05:53.0717124Z           "complete": true,
2026-06-21T23:05:53.0717242Z           "evidence": [
2026-06-21T23:05:53.0717371Z             {
2026-06-21T23:05:53.0717595Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.0717717Z               "line": 1415
2026-06-21T23:05:53.0717833Z             },
2026-06-21T23:05:53.0717947Z             {
2026-06-21T23:05:53.0718090Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0718210Z               "line": 1133
2026-06-21T23:05:53.0718328Z             },
2026-06-21T23:05:53.0718429Z             {
2026-06-21T23:05:53.0718577Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0718715Z               "line": 1162
2026-06-21T23:05:53.0718829Z             },
2026-06-21T23:05:53.0719030Z             {
2026-06-21T23:05:53.0719393Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0719558Z               "line": 1175
2026-06-21T23:05:53.0719669Z             }
2026-06-21T23:05:53.0719778Z           ]
2026-06-21T23:05:53.0719882Z         }
2026-06-21T23:05:53.0719982Z       }
2026-06-21T23:05:53.0720086Z     },
2026-06-21T23:05:53.0720194Z     {
2026-06-21T23:05:53.0720327Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T23:05:53.0728230Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T23:05:53.0728699Z       "requiredStages": [
2026-06-21T23:05:53.0728827Z         "doc",
2026-06-21T23:05:53.0729333Z         "impl",
2026-06-21T23:05:53.0729442Z         "unit"
2026-06-21T23:05:53.0729546Z       ],
2026-06-21T23:05:53.0729648Z       "stages": {
2026-06-21T23:05:53.0729751Z         "doc": {
2026-06-21T23:05:53.0729871Z           "complete": true,
2026-06-21T23:05:53.0729977Z           "evidence": [
2026-06-21T23:05:53.0730080Z             {
2026-06-21T23:05:53.0730195Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0730306Z               "line": 345
2026-06-21T23:05:53.0730409Z             },
2026-06-21T23:05:53.0730508Z             {
2026-06-21T23:05:53.0730652Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:53.0730764Z               "line": 440
2026-06-21T23:05:53.0730869Z             }
2026-06-21T23:05:53.0730974Z           ]
2026-06-21T23:05:53.0731078Z         },
2026-06-21T23:05:53.0731183Z         "impl": {
2026-06-21T23:05:53.0731308Z           "complete": true,
2026-06-21T23:05:53.0731417Z           "evidence": [
2026-06-21T23:05:53.0731527Z             {
2026-06-21T23:05:53.0731656Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0731765Z               "line": 226
2026-06-21T23:05:53.0731871Z             },
2026-06-21T23:05:53.0731966Z             {
2026-06-21T23:05:53.0732089Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0732205Z               "line": 285
2026-06-21T23:05:53.0732324Z             },
2026-06-21T23:05:53.0732418Z             {
2026-06-21T23:05:53.0732548Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0732662Z               "line": 300
2026-06-21T23:05:53.0732767Z             },
2026-06-21T23:05:53.0732873Z             {
2026-06-21T23:05:53.0732991Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0733097Z               "line": 315
2026-06-21T23:05:53.0733201Z             },
2026-06-21T23:05:53.0733309Z             {
2026-06-21T23:05:53.0733438Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0733537Z               "line": 364
2026-06-21T23:05:53.0733645Z             }
2026-06-21T23:05:53.0733746Z           ]
2026-06-21T23:05:53.0733856Z         },
2026-06-21T23:05:53.0733950Z         "int": {
2026-06-21T23:05:53.0734065Z           "complete": false,
2026-06-21T23:05:53.0734175Z           "evidence": []
2026-06-21T23:05:53.0734279Z         },
2026-06-21T23:05:53.0734419Z         "unit": {
2026-06-21T23:05:53.0734528Z           "complete": true,
2026-06-21T23:05:53.0734642Z           "evidence": [
2026-06-21T23:05:53.0734748Z             {
2026-06-21T23:05:53.0734866Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0734975Z               "line": 1190
2026-06-21T23:05:53.0735077Z             },
2026-06-21T23:05:53.0735181Z             {
2026-06-21T23:05:53.0735304Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0735415Z               "line": 1305
2026-06-21T23:05:53.0735514Z             }
2026-06-21T23:05:53.0735610Z           ]
2026-06-21T23:05:53.0735697Z         }
2026-06-21T23:05:53.0735787Z       }
2026-06-21T23:05:53.0735881Z     },
2026-06-21T23:05:53.0735961Z     {
2026-06-21T23:05:53.0736071Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T23:05:53.0740693Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T23:05:53.0741131Z       "requiredStages": [
2026-06-21T23:05:53.0741221Z         "doc",
2026-06-21T23:05:53.0741314Z         "impl",
2026-06-21T23:05:53.0741400Z         "unit"
2026-06-21T23:05:53.0741491Z       ],
2026-06-21T23:05:53.0741587Z       "stages": {
2026-06-21T23:05:53.0741672Z         "doc": {
2026-06-21T23:05:53.0741777Z           "complete": true,
2026-06-21T23:05:53.0741872Z           "evidence": [
2026-06-21T23:05:53.0741958Z             {
2026-06-21T23:05:53.0742063Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:53.0742150Z               "line": 461
2026-06-21T23:05:53.0742231Z             }
2026-06-21T23:05:53.0742315Z           ]
2026-06-21T23:05:53.0742398Z         },
2026-06-21T23:05:53.0742479Z         "impl": {
2026-06-21T23:05:53.0742578Z           "complete": true,
2026-06-21T23:05:53.0742659Z           "evidence": [
2026-06-21T23:05:53.0742736Z             {
2026-06-21T23:05:53.0742849Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0742935Z               "line": 421
2026-06-21T23:05:53.0743017Z             },
2026-06-21T23:05:53.0743104Z             {
2026-06-21T23:05:53.0743212Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0743298Z               "line": 437
2026-06-21T23:05:53.0743390Z             }
2026-06-21T23:05:53.0743479Z           ]
2026-06-21T23:05:53.0743551Z         },
2026-06-21T23:05:53.0743637Z         "int": {
2026-06-21T23:05:53.0743724Z           "complete": false,
2026-06-21T23:05:53.0743817Z           "evidence": []
2026-06-21T23:05:53.0743893Z         },
2026-06-21T23:05:53.0743979Z         "unit": {
2026-06-21T23:05:53.0744074Z           "complete": true,
2026-06-21T23:05:53.0744158Z           "evidence": [
2026-06-21T23:05:53.0744243Z             {
2026-06-21T23:05:53.0744349Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0744435Z               "line": 1440
2026-06-21T23:05:53.0744520Z             },
2026-06-21T23:05:53.0744605Z             {
2026-06-21T23:05:53.0744702Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0744792Z               "line": 1459
2026-06-21T23:05:53.0744873Z             },
2026-06-21T23:05:53.0744955Z             {
2026-06-21T23:05:53.0745054Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0745140Z               "line": 1471
2026-06-21T23:05:53.0745230Z             },
2026-06-21T23:05:53.0745327Z             {
2026-06-21T23:05:53.0745426Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0745512Z               "line": 1499
2026-06-21T23:05:53.0745598Z             }
2026-06-21T23:05:53.0745679Z           ]
2026-06-21T23:05:53.0745759Z         }
2026-06-21T23:05:53.0745851Z       }
2026-06-21T23:05:53.0745928Z     },
2026-06-21T23:05:53.0746013Z     {
2026-06-21T23:05:53.0746117Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T23:05:53.0750876Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T23:05:53.0751214Z       "requiredStages": [
2026-06-21T23:05:53.0751311Z         "doc",
2026-06-21T23:05:53.0751388Z         "impl",
2026-06-21T23:05:53.0751473Z         "unit"
2026-06-21T23:05:53.0751553Z       ],
2026-06-21T23:05:53.0751638Z       "stages": {
2026-06-21T23:05:53.0751719Z         "doc": {
2026-06-21T23:05:53.0751814Z           "complete": true,
2026-06-21T23:05:53.0751898Z           "evidence": [
2026-06-21T23:05:53.0751969Z             {
2026-06-21T23:05:53.0752076Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:05:53.0752161Z               "line": 447
2026-06-21T23:05:53.0752246Z             }
2026-06-21T23:05:53.0752328Z           ]
2026-06-21T23:05:53.0752414Z         },
2026-06-21T23:05:53.0752500Z         "impl": {
2026-06-21T23:05:53.0752589Z           "complete": true,
2026-06-21T23:05:53.0752691Z           "evidence": [
2026-06-21T23:05:53.0752771Z             {
2026-06-21T23:05:53.0752875Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0752963Z               "line": 395
2026-06-21T23:05:53.0753043Z             },
2026-06-21T23:05:53.0753124Z             {
2026-06-21T23:05:53.0753209Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0753287Z               "line": 411
2026-06-21T23:05:53.0753368Z             },
2026-06-21T23:05:53.0753439Z             {
2026-06-21T23:05:53.0753534Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0753625Z               "line": 454
2026-06-21T23:05:53.0753711Z             },
2026-06-21T23:05:53.0753792Z             {
2026-06-21T23:05:53.0753897Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0753983Z               "line": 468
2026-06-21T23:05:53.0754068Z             },
2026-06-21T23:05:53.0754149Z             {
2026-06-21T23:05:53.0754246Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0754331Z               "line": 479
2026-06-21T23:05:53.0754406Z             }
2026-06-21T23:05:53.0754491Z           ]
2026-06-21T23:05:53.0754572Z         },
2026-06-21T23:05:53.0754658Z         "int": {
2026-06-21T23:05:53.0754741Z           "complete": false,
2026-06-21T23:05:53.0754827Z           "evidence": []
2026-06-21T23:05:53.0754918Z         },
2026-06-21T23:05:53.0755000Z         "unit": {
2026-06-21T23:05:53.0755089Z           "complete": true,
2026-06-21T23:05:53.0755180Z           "evidence": [
2026-06-21T23:05:53.0755263Z             {
2026-06-21T23:05:53.0755358Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0755447Z               "line": 1381
2026-06-21T23:05:53.0755539Z             },
2026-06-21T23:05:53.0755624Z             {
2026-06-21T23:05:53.0755719Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0755795Z               "line": 1402
2026-06-21T23:05:53.0755882Z             },
2026-06-21T23:05:53.0755972Z             {
2026-06-21T23:05:53.0756159Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0756249Z               "line": 1423
2026-06-21T23:05:53.0756406Z             }
2026-06-21T23:05:53.0756497Z           ]
2026-06-21T23:05:53.0756578Z         }
2026-06-21T23:05:53.0756668Z       }
2026-06-21T23:05:53.0756745Z     },
2026-06-21T23:05:53.0756836Z     {
2026-06-21T23:05:53.0756935Z       "id": "REQ-RCVIEW-1",
2026-06-21T23:05:53.0761461Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T23:05:53.0761595Z       "requiredStages": [
2026-06-21T23:05:53.0761680Z         "doc",
2026-06-21T23:05:53.0761761Z         "impl",
2026-06-21T23:05:53.0765545Z         "unit",
2026-06-21T23:05:53.0765659Z         "int"
2026-06-21T23:05:53.0765740Z       ],
2026-06-21T23:05:53.0765832Z       "stages": {
2026-06-21T23:05:53.0765922Z         "doc": {
2026-06-21T23:05:53.0766017Z           "complete": true,
2026-06-21T23:05:53.0766113Z           "evidence": [
2026-06-21T23:05:53.0766203Z             {
2026-06-21T23:05:53.0766298Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0766399Z               "line": 342
2026-06-21T23:05:53.0766481Z             }
2026-06-21T23:05:53.0766561Z           ]
2026-06-21T23:05:53.0766637Z         },
2026-06-21T23:05:53.0766724Z         "impl": {
2026-06-21T23:05:53.0766819Z           "complete": true,
2026-06-21T23:05:53.0766904Z           "evidence": [
2026-06-21T23:05:53.0766990Z             {
2026-06-21T23:05:53.0767120Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:53.0767208Z               "line": 549
2026-06-21T23:05:53.0767295Z             },
2026-06-21T23:05:53.0767368Z             {
2026-06-21T23:05:53.0767490Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:53.0767580Z               "line": 705
2026-06-21T23:05:53.0767671Z             },
2026-06-21T23:05:53.0767752Z             {
2026-06-21T23:05:53.0767864Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:53.0767940Z               "line": 716
2026-06-21T23:05:53.0768016Z             },
2026-06-21T23:05:53.0768108Z             {
2026-06-21T23:05:53.0768226Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:05:53.0768312Z               "line": 41
2026-06-21T23:05:53.0768394Z             },
2026-06-21T23:05:53.0768479Z             {
2026-06-21T23:05:53.0768597Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:05:53.0768685Z               "line": 62
2026-06-21T23:05:53.0768765Z             },
2026-06-21T23:05:53.0768850Z             {
2026-06-21T23:05:53.0769256Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:53.0769348Z               "line": 309
2026-06-21T23:05:53.0769591Z             },
2026-06-21T23:05:53.0769672Z             {
2026-06-21T23:05:53.0769776Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:05:53.0769876Z               "line": 701
2026-06-21T23:05:53.0769959Z             }
2026-06-21T23:05:53.0770033Z           ]
2026-06-21T23:05:53.0770105Z         },
2026-06-21T23:05:53.0770191Z         "int": {
2026-06-21T23:05:53.0770273Z           "complete": true,
2026-06-21T23:05:53.0770358Z           "evidence": [
2026-06-21T23:05:53.0770443Z             {
2026-06-21T23:05:53.0770561Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:53.0770639Z               "line": 916
2026-06-21T23:05:53.0770724Z             },
2026-06-21T23:05:53.0770809Z             {
2026-06-21T23:05:53.0770920Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:53.0771011Z               "line": 956
2026-06-21T23:05:53.0771100Z             },
2026-06-21T23:05:53.0771172Z             {
2026-06-21T23:05:53.0771287Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:53.0771382Z               "line": 1003
2026-06-21T23:05:53.0771462Z             },
2026-06-21T23:05:53.0771545Z             {
2026-06-21T23:05:53.0771654Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:53.0771739Z               "line": 1129
2026-06-21T23:05:53.0771811Z             }
2026-06-21T23:05:53.0771898Z           ]
2026-06-21T23:05:53.0771978Z         },
2026-06-21T23:05:53.0772064Z         "unit": {
2026-06-21T23:05:53.0772145Z           "complete": true,
2026-06-21T23:05:53.0772226Z           "evidence": [
2026-06-21T23:05:53.0772316Z             {
2026-06-21T23:05:53.0772426Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:05:53.0772518Z               "line": 175
2026-06-21T23:05:53.0772593Z             },
2026-06-21T23:05:53.0772678Z             {
2026-06-21T23:05:53.0772801Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:05:53.0772882Z               "line": 195
2026-06-21T23:05:53.0772966Z             }
2026-06-21T23:05:53.0773042Z           ]
2026-06-21T23:05:53.0773128Z         }
2026-06-21T23:05:53.0773210Z       }
2026-06-21T23:05:53.0773295Z     },
2026-06-21T23:05:53.0773376Z     {
2026-06-21T23:05:53.0773463Z       "id": "REQ-REACH-1",
2026-06-21T23:05:53.0773615Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T23:05:53.0773695Z       "requiredStages": [
2026-06-21T23:05:53.0773778Z         "impl",
2026-06-21T23:05:53.0773863Z         "unit",
2026-06-21T23:05:53.0773948Z         "int"
2026-06-21T23:05:53.0774034Z       ],
2026-06-21T23:05:53.0774116Z       "stages": {
2026-06-21T23:05:53.0774211Z         "doc": {
2026-06-21T23:05:53.0774296Z           "complete": false,
2026-06-21T23:05:53.0774383Z           "evidence": []
2026-06-21T23:05:53.0774454Z         },
2026-06-21T23:05:53.0774535Z         "impl": {
2026-06-21T23:05:53.0774626Z           "complete": true,
2026-06-21T23:05:53.0774712Z           "evidence": [
2026-06-21T23:05:53.0774807Z             {
2026-06-21T23:05:53.0774926Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:53.0775008Z               "line": 705
2026-06-21T23:05:53.0775089Z             },
2026-06-21T23:05:53.0775178Z             {
2026-06-21T23:05:53.0775283Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:05:53.0775366Z               "line": 76
2026-06-21T23:05:53.0775451Z             },
2026-06-21T23:05:53.0775531Z             {
2026-06-21T23:05:53.0775635Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:05:53.0775717Z               "line": 222
2026-06-21T23:05:53.0775801Z             },
2026-06-21T23:05:53.0775886Z             {
2026-06-21T23:05:53.0775991Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:05:53.0776087Z               "line": 422
2026-06-21T23:05:53.0776167Z             },
2026-06-21T23:05:53.0776354Z             {
2026-06-21T23:05:53.0776459Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:05:53.0776620Z               "line": 529
2026-06-21T23:05:53.0776707Z             },
2026-06-21T23:05:53.0776788Z             {
2026-06-21T23:05:53.0776906Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T23:05:53.0776988Z               "line": 39
2026-06-21T23:05:53.0777073Z             },
2026-06-21T23:05:53.0777154Z             {
2026-06-21T23:05:53.0777259Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:53.0777346Z               "line": 301
2026-06-21T23:05:53.0777430Z             },
2026-06-21T23:05:53.0777502Z             {
2026-06-21T23:05:53.0777599Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T23:05:53.0777685Z               "line": 88
2026-06-21T23:05:53.0777759Z             },
2026-06-21T23:05:53.0777845Z             {
2026-06-21T23:05:53.0777956Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T23:05:53.0778046Z               "line": 98
2026-06-21T23:05:53.0778131Z             },
2026-06-21T23:05:53.0778211Z             {
2026-06-21T23:05:53.0778326Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0778415Z               "line": 233
2026-06-21T23:05:53.0778500Z             }
2026-06-21T23:05:53.0778581Z           ]
2026-06-21T23:05:53.0778663Z         },
2026-06-21T23:05:53.0778748Z         "int": {
2026-06-21T23:05:53.0778829Z           "complete": true,
2026-06-21T23:05:53.0778921Z           "evidence": [
2026-06-21T23:05:53.0779115Z             {
2026-06-21T23:05:53.0779273Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:53.0779354Z               "line": 415
2026-06-21T23:05:53.0779434Z             },
2026-06-21T23:05:53.0779517Z             {
2026-06-21T23:05:53.0779640Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:53.0779735Z               "line": 520
2026-06-21T23:05:53.0779816Z             },
2026-06-21T23:05:53.0779913Z             {
2026-06-21T23:05:53.0780064Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0780146Z               "line": 998
2026-06-21T23:05:53.0780228Z             },
2026-06-21T23:05:53.0780302Z             {
2026-06-21T23:05:53.0780422Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0780514Z               "line": 1383
2026-06-21T23:05:53.0780598Z             }
2026-06-21T23:05:53.0780679Z           ]
2026-06-21T23:05:53.0780805Z         },
2026-06-21T23:05:53.0780881Z         "unit": {
2026-06-21T23:05:53.0780964Z           "complete": true,
2026-06-21T23:05:53.0781045Z           "evidence": [
2026-06-21T23:05:53.0781126Z             {
2026-06-21T23:05:53.0781238Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:05:53.0781322Z               "line": 639
2026-06-21T23:05:53.0781407Z             },
2026-06-21T23:05:53.0781485Z             {
2026-06-21T23:05:53.0781590Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:05:53.0781689Z               "line": 660
2026-06-21T23:05:53.0781771Z             },
2026-06-21T23:05:53.0781861Z             {
2026-06-21T23:05:53.0781980Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:05:53.0782066Z               "line": 771
2026-06-21T23:05:53.0782148Z             },
2026-06-21T23:05:53.0782223Z             {
2026-06-21T23:05:53.0782342Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T23:05:53.0782424Z               "line": 93
2026-06-21T23:05:53.0782505Z             },
2026-06-21T23:05:53.0782586Z             {
2026-06-21T23:05:53.0782691Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T23:05:53.0782778Z               "line": 224
2026-06-21T23:05:53.0782857Z             },
2026-06-21T23:05:53.0782943Z             {
2026-06-21T23:05:53.0783049Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T23:05:53.0783130Z               "line": 96
2026-06-21T23:05:53.0783318Z             },
2026-06-21T23:05:53.0783400Z             {
2026-06-21T23:05:53.0783503Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T23:05:53.0783669Z               "line": 146
2026-06-21T23:05:53.0783756Z             },
2026-06-21T23:05:53.0783836Z             {
2026-06-21T23:05:53.0783945Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:53.0784027Z               "line": 698
2026-06-21T23:05:53.0784118Z             },
2026-06-21T23:05:53.0784232Z             {
2026-06-21T23:05:53.0784414Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T23:05:53.0784513Z               "line": 118
2026-06-21T23:05:53.0784604Z             },
2026-06-21T23:05:53.0784681Z             {
2026-06-21T23:05:53.0784790Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T23:05:53.0784871Z               "line": 148
2026-06-21T23:05:53.0784943Z             },
2026-06-21T23:05:53.0785019Z             {
2026-06-21T23:05:53.0785133Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0785233Z               "line": 928
2026-06-21T23:05:53.0785311Z             }
2026-06-21T23:05:53.0785395Z           ]
2026-06-21T23:05:53.0785472Z         }
2026-06-21T23:05:53.0785558Z       }
2026-06-21T23:05:53.0785626Z     },
2026-06-21T23:05:53.0785710Z     {
2026-06-21T23:05:53.0785806Z       "id": "REQ-REACH-2",
2026-06-21T23:05:53.0785946Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T23:05:53.0786044Z       "requiredStages": [],
2026-06-21T23:05:53.0786129Z       "stages": {
2026-06-21T23:05:53.0786219Z         "doc": {
2026-06-21T23:05:53.0786310Z           "complete": false,
2026-06-21T23:05:53.0786394Z           "evidence": []
2026-06-21T23:05:53.0786474Z         },
2026-06-21T23:05:53.0786556Z         "impl": {
2026-06-21T23:05:53.0786642Z           "complete": false,
2026-06-21T23:05:53.0786727Z           "evidence": []
2026-06-21T23:05:53.0786812Z         },
2026-06-21T23:05:53.0786895Z         "int": {
2026-06-21T23:05:53.0786990Z           "complete": false,
2026-06-21T23:05:53.0787080Z           "evidence": []
2026-06-21T23:05:53.0787166Z         },
2026-06-21T23:05:53.0787257Z         "unit": {
2026-06-21T23:05:53.0787343Z           "complete": false,
2026-06-21T23:05:53.0787437Z           "evidence": []
2026-06-21T23:05:53.0787519Z         }
2026-06-21T23:05:53.0787605Z       }
2026-06-21T23:05:53.0787686Z     },
2026-06-21T23:05:53.0787757Z     {
2026-06-21T23:05:53.0787859Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T23:05:53.0791403Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T23:05:53.0791520Z       "requiredStages": [
2026-06-21T23:05:53.0791601Z         "doc",
2026-06-21T23:05:53.0791687Z         "impl",
2026-06-21T23:05:53.0791768Z         "unit",
2026-06-21T23:05:53.0791854Z         "int"
2026-06-21T23:05:53.0791944Z       ],
2026-06-21T23:05:53.0792030Z       "stages": {
2026-06-21T23:05:53.0792239Z         "doc": {
2026-06-21T23:05:53.0792331Z           "complete": true,
2026-06-21T23:05:53.0792507Z           "evidence": [
2026-06-21T23:05:53.0792583Z             {
2026-06-21T23:05:53.0792679Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0792778Z               "line": 372
2026-06-21T23:05:53.0792854Z             }
2026-06-21T23:05:53.0792941Z           ]
2026-06-21T23:05:53.0793028Z         },
2026-06-21T23:05:53.0793112Z         "impl": {
2026-06-21T23:05:53.0793198Z           "complete": true,
2026-06-21T23:05:53.0793290Z           "evidence": [
2026-06-21T23:05:53.0793366Z             {
2026-06-21T23:05:53.0793475Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:05:53.0793560Z               "line": 110
2026-06-21T23:05:53.0793643Z             }
2026-06-21T23:05:53.0793727Z           ]
2026-06-21T23:05:53.0793808Z         },
2026-06-21T23:05:53.0793893Z         "int": {
2026-06-21T23:05:53.0793984Z           "complete": true,
2026-06-21T23:05:53.0794068Z           "evidence": [
2026-06-21T23:05:53.0794149Z             {
2026-06-21T23:05:53.0794292Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T23:05:53.0794383Z               "line": 26
2026-06-21T23:05:53.0794463Z             }
2026-06-21T23:05:53.0794544Z           ]
2026-06-21T23:05:53.0794617Z         },
2026-06-21T23:05:53.0794698Z         "unit": {
2026-06-21T23:05:53.0794792Z           "complete": true,
2026-06-21T23:05:53.0794869Z           "evidence": [
2026-06-21T23:05:53.0794955Z             {
2026-06-21T23:05:53.0795054Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:05:53.0795145Z               "line": 320
2026-06-21T23:05:53.0795232Z             }
2026-06-21T23:05:53.0795303Z           ]
2026-06-21T23:05:53.0795378Z         }
2026-06-21T23:05:53.0795464Z       }
2026-06-21T23:05:53.0795547Z     },
2026-06-21T23:05:53.0795626Z     {
2026-06-21T23:05:53.0795712Z       "id": "REQ-REL-1",
2026-06-21T23:05:53.0796080Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T23:05:53.0796167Z       "requiredStages": [
2026-06-21T23:05:53.0796247Z         "doc",
2026-06-21T23:05:53.0796332Z         "impl"
2026-06-21T23:05:53.0796414Z       ],
2026-06-21T23:05:53.0796496Z       "stages": {
2026-06-21T23:05:53.0796585Z         "doc": {
2026-06-21T23:05:53.0796675Z           "complete": true,
2026-06-21T23:05:53.0796760Z           "evidence": [
2026-06-21T23:05:53.0796837Z             {
2026-06-21T23:05:53.0797048Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T23:05:53.0797135Z               "line": 3
2026-06-21T23:05:53.0797217Z             }
2026-06-21T23:05:53.0797302Z           ]
2026-06-21T23:05:53.0797387Z         },
2026-06-21T23:05:53.0797474Z         "impl": {
2026-06-21T23:05:53.0797565Z           "complete": true,
2026-06-21T23:05:53.0797650Z           "evidence": [
2026-06-21T23:05:53.0797731Z             {
2026-06-21T23:05:53.0797850Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T23:05:53.0797936Z               "line": 11
2026-06-21T23:05:53.0798021Z             },
2026-06-21T23:05:53.0798104Z             {
2026-06-21T23:05:53.0798217Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.0798294Z               "line": 265
2026-06-21T23:05:53.0798380Z             }
2026-06-21T23:05:53.0798456Z           ]
2026-06-21T23:05:53.0798537Z         },
2026-06-21T23:05:53.0798623Z         "int": {
2026-06-21T23:05:53.0798709Z           "complete": false,
2026-06-21T23:05:53.0798800Z           "evidence": []
2026-06-21T23:05:53.0798885Z         },
2026-06-21T23:05:53.0799072Z         "unit": {
2026-06-21T23:05:53.0799190Z           "complete": false,
2026-06-21T23:05:53.0799279Z           "evidence": []
2026-06-21T23:05:53.0799365Z         }
2026-06-21T23:05:53.0799460Z       }
2026-06-21T23:05:53.0799549Z     },
2026-06-21T23:05:53.0799620Z     {
2026-06-21T23:05:53.0799836Z       "id": "REQ-REL-2",
2026-06-21T23:05:53.0800297Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T23:05:53.0800489Z       "requiredStages": [
2026-06-21T23:05:53.0800569Z         "impl",
2026-06-21T23:05:53.0800652Z         "int"
2026-06-21T23:05:53.0800732Z       ],
2026-06-21T23:05:53.0800808Z       "stages": {
2026-06-21T23:05:53.0800888Z         "doc": {
2026-06-21T23:05:53.0800976Z           "complete": true,
2026-06-21T23:05:53.0801075Z           "evidence": [
2026-06-21T23:05:53.0801161Z             {
2026-06-21T23:05:53.0801261Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T23:05:53.0801352Z               "line": 6
2026-06-21T23:05:53.0801432Z             }
2026-06-21T23:05:53.0801513Z           ]
2026-06-21T23:05:53.0801591Z         },
2026-06-21T23:05:53.0801677Z         "impl": {
2026-06-21T23:05:53.0801775Z           "complete": true,
2026-06-21T23:05:53.0801862Z           "evidence": [
2026-06-21T23:05:53.0801953Z             {
2026-06-21T23:05:53.0802066Z               "path": ".github/workflows/release.yml",
2026-06-21T23:05:53.0802151Z               "line": 16
2026-06-21T23:05:53.0802228Z             },
2026-06-21T23:05:53.0802315Z             {
2026-06-21T23:05:53.0802428Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.0802514Z               "line": 352
2026-06-21T23:05:53.0802600Z             },
2026-06-21T23:05:53.0802671Z             {
2026-06-21T23:05:53.0802771Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.0802852Z               "line": 426
2026-06-21T23:05:53.0802939Z             },
2026-06-21T23:05:53.0803025Z             {
2026-06-21T23:05:53.0803124Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.0803206Z               "line": 588
2026-06-21T23:05:53.0803287Z             },
2026-06-21T23:05:53.0803373Z             {
2026-06-21T23:05:53.0803477Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.0803569Z               "line": 720
2026-06-21T23:05:53.0803658Z             }
2026-06-21T23:05:53.0803739Z           ]
2026-06-21T23:05:53.0803816Z         },
2026-06-21T23:05:53.0803903Z         "int": {
2026-06-21T23:05:53.0803987Z           "complete": true,
2026-06-21T23:05:53.0804073Z           "evidence": [
2026-06-21T23:05:53.0804160Z             {
2026-06-21T23:05:53.0804292Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T23:05:53.0804373Z               "line": 13
2026-06-21T23:05:53.0804458Z             }
2026-06-21T23:05:53.0804544Z           ]
2026-06-21T23:05:53.0804624Z         },
2026-06-21T23:05:53.0804714Z         "unit": {
2026-06-21T23:05:53.0804800Z           "complete": false,
2026-06-21T23:05:53.0804890Z           "evidence": []
2026-06-21T23:05:53.0804976Z         }
2026-06-21T23:05:53.0805057Z       }
2026-06-21T23:05:53.0805133Z     },
2026-06-21T23:05:53.0805219Z     {
2026-06-21T23:05:53.0805304Z       "id": "REQ-REL-3",
2026-06-21T23:05:53.0805719Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T23:05:53.0805825Z       "requiredStages": [
2026-06-21T23:05:53.0805901Z         "impl",
2026-06-21T23:05:53.0805991Z         "unit"
2026-06-21T23:05:53.0806068Z       ],
2026-06-21T23:05:53.0806150Z       "stages": {
2026-06-21T23:05:53.0806240Z         "doc": {
2026-06-21T23:05:53.0806325Z           "complete": false,
2026-06-21T23:05:53.0806412Z           "evidence": []
2026-06-21T23:05:53.0806497Z         },
2026-06-21T23:05:53.0806578Z         "impl": {
2026-06-21T23:05:53.0806668Z           "complete": true,
2026-06-21T23:05:53.0806761Z           "evidence": [
2026-06-21T23:05:53.0806844Z             {
2026-06-21T23:05:53.0806969Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.0807061Z               "line": 237
2026-06-21T23:05:53.0807221Z             },
2026-06-21T23:05:53.0807310Z             {
2026-06-21T23:05:53.0807495Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.0807590Z               "line": 289
2026-06-21T23:05:53.0807671Z             },
2026-06-21T23:05:53.0807743Z             {
2026-06-21T23:05:53.0807852Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.0807933Z               "line": 329
2026-06-21T23:05:53.0808020Z             },
2026-06-21T23:05:53.0808101Z             {
2026-06-21T23:05:53.0808210Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.0808291Z               "line": 353
2026-06-21T23:05:53.0808373Z             },
2026-06-21T23:05:53.0808459Z             {
2026-06-21T23:05:53.0808558Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.0808644Z               "line": 394
2026-06-21T23:05:53.0808730Z             }
2026-06-21T23:05:53.0808816Z           ]
2026-06-21T23:05:53.0808896Z         },
2026-06-21T23:05:53.0809097Z         "int": {
2026-06-21T23:05:53.0809207Z           "complete": false,
2026-06-21T23:05:53.0809289Z           "evidence": []
2026-06-21T23:05:53.0809369Z         },
2026-06-21T23:05:53.0809449Z         "unit": {
2026-06-21T23:05:53.0809545Z           "complete": true,
2026-06-21T23:05:53.0809637Z           "evidence": [
2026-06-21T23:05:53.0809717Z             {
2026-06-21T23:05:53.0809835Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.0809920Z               "line": 1045
2026-06-21T23:05:53.0809997Z             },
2026-06-21T23:05:53.0810076Z             {
2026-06-21T23:05:53.0810190Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.0810281Z               "line": 1104
2026-06-21T23:05:53.0810358Z             }
2026-06-21T23:05:53.0810443Z           ]
2026-06-21T23:05:53.0810519Z         }
2026-06-21T23:05:53.0810596Z       }
2026-06-21T23:05:53.0810677Z     },
2026-06-21T23:05:53.0810757Z     {
2026-06-21T23:05:53.0810858Z       "id": "REQ-RUN-PICKER",
2026-06-21T23:05:53.0815470Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T23:05:53.0815583Z       "requiredStages": [
2026-06-21T23:05:53.0815669Z         "doc",
2026-06-21T23:05:53.0815756Z         "impl",
2026-06-21T23:05:53.0815841Z         "unit"
2026-06-21T23:05:53.0815922Z       ],
2026-06-21T23:05:53.0816004Z       "stages": {
2026-06-21T23:05:53.0816085Z         "doc": {
2026-06-21T23:05:53.0816184Z           "complete": true,
2026-06-21T23:05:53.0816390Z           "evidence": [
2026-06-21T23:05:53.0816476Z             {
2026-06-21T23:05:53.0816671Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0816756Z               "line": 349
2026-06-21T23:05:53.0816842Z             }
2026-06-21T23:05:53.0816923Z           ]
2026-06-21T23:05:53.0817010Z         },
2026-06-21T23:05:53.0817095Z         "impl": {
2026-06-21T23:05:53.0817190Z           "complete": true,
2026-06-21T23:05:53.0817282Z           "evidence": [
2026-06-21T23:05:53.0817363Z             {
2026-06-21T23:05:53.0817481Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0817568Z               "line": 958
2026-06-21T23:05:53.0817654Z             },
2026-06-21T23:05:53.0817734Z             {
2026-06-21T23:05:53.0817829Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0817924Z               "line": 968
2026-06-21T23:05:53.0818005Z             },
2026-06-21T23:05:53.0818083Z             {
2026-06-21T23:05:53.0818207Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:05:53.0818303Z               "line": 9
2026-06-21T23:05:53.0818385Z             },
2026-06-21T23:05:53.0818479Z             {
2026-06-21T23:05:53.0818595Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:05:53.0818675Z               "line": 67
2026-06-21T23:05:53.0818755Z             },
2026-06-21T23:05:53.0818836Z             {
2026-06-21T23:05:53.0819028Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T23:05:53.0819156Z               "line": 16
2026-06-21T23:05:53.0819262Z             },
2026-06-21T23:05:53.0819362Z             {
2026-06-21T23:05:53.0819500Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T23:05:53.0819582Z               "line": 254
2026-06-21T23:05:53.0819666Z             },
2026-06-21T23:05:53.0819743Z             {
2026-06-21T23:05:53.0819858Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0819939Z               "line": 11
2026-06-21T23:05:53.0820014Z             },
2026-06-21T23:05:53.0820096Z             {
2026-06-21T23:05:53.0820202Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0820300Z               "line": 115
2026-06-21T23:05:53.0820404Z             },
2026-06-21T23:05:53.0820480Z             {
2026-06-21T23:05:53.0820589Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0820684Z               "line": 554
2026-06-21T23:05:53.0820769Z             },
2026-06-21T23:05:53.0820856Z             {
2026-06-21T23:05:53.0820960Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0821046Z               "line": 635
2026-06-21T23:05:53.0821132Z             },
2026-06-21T23:05:53.0821204Z             {
2026-06-21T23:05:53.0821313Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0821403Z               "line": 694
2026-06-21T23:05:53.0821490Z             },
2026-06-21T23:05:53.0821571Z             {
2026-06-21T23:05:53.0821670Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0821762Z               "line": 747
2026-06-21T23:05:53.0821838Z             },
2026-06-21T23:05:53.0821919Z             {
2026-06-21T23:05:53.0822023Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0822111Z               "line": 785
2026-06-21T23:05:53.0822191Z             },
2026-06-21T23:05:53.0822290Z             {
2026-06-21T23:05:53.0822406Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:05:53.0822486Z               "line": 8
2026-06-21T23:05:53.0822572Z             }
2026-06-21T23:05:53.0822653Z           ]
2026-06-21T23:05:53.0822735Z         },
2026-06-21T23:05:53.0822820Z         "int": {
2026-06-21T23:05:53.0822915Z           "complete": false,
2026-06-21T23:05:53.0823007Z           "evidence": []
2026-06-21T23:05:53.0823083Z         },
2026-06-21T23:05:53.0823163Z         "unit": {
2026-06-21T23:05:53.0823248Z           "complete": true,
2026-06-21T23:05:53.0823348Z           "evidence": [
2026-06-21T23:05:53.0823549Z             {
2026-06-21T23:05:53.0823658Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0823835Z               "line": 7638
2026-06-21T23:05:53.0823915Z             },
2026-06-21T23:05:53.0823997Z             {
2026-06-21T23:05:53.0824097Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0824197Z               "line": 7649
2026-06-21T23:05:53.0824288Z             },
2026-06-21T23:05:53.0824369Z             {
2026-06-21T23:05:53.0824483Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0824563Z               "line": 879
2026-06-21T23:05:53.0824651Z             },
2026-06-21T23:05:53.0824732Z             {
2026-06-21T23:05:53.0824841Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0824922Z               "line": 928
2026-06-21T23:05:53.0825013Z             },
2026-06-21T23:05:53.0825117Z             {
2026-06-21T23:05:53.0825232Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0825352Z               "line": 979
2026-06-21T23:05:53.0825436Z             },
2026-06-21T23:05:53.0825521Z             {
2026-06-21T23:05:53.0825636Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0825721Z               "line": 996
2026-06-21T23:05:53.0825805Z             },
2026-06-21T23:05:53.0825886Z             {
2026-06-21T23:05:53.0825997Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0826082Z               "line": 1005
2026-06-21T23:05:53.0826177Z             },
2026-06-21T23:05:53.0826259Z             {
2026-06-21T23:05:53.0826373Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0826467Z               "line": 1016
2026-06-21T23:05:53.0826559Z             },
2026-06-21T23:05:53.0826650Z             {
2026-06-21T23:05:53.0826759Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0826854Z               "line": 1038
2026-06-21T23:05:53.0826931Z             },
2026-06-21T23:05:53.0827021Z             {
2026-06-21T23:05:53.0827130Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0827213Z               "line": 1057
2026-06-21T23:05:53.0827298Z             },
2026-06-21T23:05:53.0827379Z             {
2026-06-21T23:05:53.0827484Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0827570Z               "line": 1107
2026-06-21T23:05:53.0827650Z             },
2026-06-21T23:05:53.0827745Z             {
2026-06-21T23:05:53.0827852Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0827942Z               "line": 1136
2026-06-21T23:05:53.0828022Z             },
2026-06-21T23:05:53.0828104Z             {
2026-06-21T23:05:53.0828219Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0828304Z               "line": 1149
2026-06-21T23:05:53.0828384Z             },
2026-06-21T23:05:53.0828465Z             {
2026-06-21T23:05:53.0828574Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0828653Z               "line": 1215
2026-06-21T23:05:53.0828744Z             },
2026-06-21T23:05:53.0828830Z             {
2026-06-21T23:05:53.0829025Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0829121Z               "line": 1256
2026-06-21T23:05:53.0829197Z             },
2026-06-21T23:05:53.0829302Z             {
2026-06-21T23:05:53.0829406Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0829498Z               "line": 1272
2026-06-21T23:05:53.0829579Z             },
2026-06-21T23:05:53.0829659Z             {
2026-06-21T23:05:53.0829765Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:05:53.0829851Z               "line": 491
2026-06-21T23:05:53.0829932Z             },
2026-06-21T23:05:53.0830012Z             {
2026-06-21T23:05:53.0830128Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:05:53.0830212Z               "line": 506
2026-06-21T23:05:53.0830293Z             },
2026-06-21T23:05:53.0830375Z             {
2026-06-21T23:05:53.0830613Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:05:53.0830695Z               "line": 524
2026-06-21T23:05:53.0830870Z             },
2026-06-21T23:05:53.0830946Z             {
2026-06-21T23:05:53.0831074Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:05:53.0831159Z               "line": 546
2026-06-21T23:05:53.0831244Z             },
2026-06-21T23:05:53.0831324Z             {
2026-06-21T23:05:53.0831435Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:05:53.0831520Z               "line": 556
2026-06-21T23:05:53.0831596Z             },
2026-06-21T23:05:53.0831682Z             {
2026-06-21T23:05:53.0831788Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:05:53.0831877Z               "line": 582
2026-06-21T23:05:53.0831954Z             }
2026-06-21T23:05:53.0832036Z           ]
2026-06-21T23:05:53.0832121Z         }
2026-06-21T23:05:53.0832206Z       }
2026-06-21T23:05:53.0832293Z     },
2026-06-21T23:05:53.0832379Z     {
2026-06-21T23:05:53.0832479Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T23:05:53.0837027Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T23:05:53.0837157Z       "requiredStages": [
2026-06-21T23:05:53.0837238Z         "doc",
2026-06-21T23:05:53.0837319Z         "impl",
2026-06-21T23:05:53.0837405Z         "unit"
2026-06-21T23:05:53.0837491Z       ],
2026-06-21T23:05:53.0837586Z       "stages": {
2026-06-21T23:05:53.0837671Z         "doc": {
2026-06-21T23:05:53.0837758Z           "complete": true,
2026-06-21T23:05:53.0837844Z           "evidence": [
2026-06-21T23:05:53.0837934Z             {
2026-06-21T23:05:53.0838015Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0838097Z               "line": 390
2026-06-21T23:05:53.0838187Z             }
2026-06-21T23:05:53.0838268Z           ]
2026-06-21T23:05:53.0838349Z         },
2026-06-21T23:05:53.0838431Z         "impl": {
2026-06-21T23:05:53.0838511Z           "complete": true,
2026-06-21T23:05:53.0838597Z           "evidence": [
2026-06-21T23:05:53.0838679Z             {
2026-06-21T23:05:53.0838803Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:05:53.0838892Z               "line": 39
2026-06-21T23:05:53.0839077Z             },
2026-06-21T23:05:53.0839185Z             {
2026-06-21T23:05:53.0839304Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:05:53.0839390Z               "line": 79
2026-06-21T23:05:53.0839580Z             },
2026-06-21T23:05:53.0839671Z             {
2026-06-21T23:05:53.0839786Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:05:53.0839957Z               "line": 162
2026-06-21T23:05:53.0840039Z             }
2026-06-21T23:05:53.0843593Z           ]
2026-06-21T23:05:53.0843697Z         },
2026-06-21T23:05:53.0843783Z         "int": {
2026-06-21T23:05:53.0843884Z           "complete": false,
2026-06-21T23:05:53.0843968Z           "evidence": []
2026-06-21T23:05:53.0844045Z         },
2026-06-21T23:05:53.0844127Z         "unit": {
2026-06-21T23:05:53.0844223Z           "complete": true,
2026-06-21T23:05:53.0844306Z           "evidence": [
2026-06-21T23:05:53.0844392Z             {
2026-06-21T23:05:53.0844512Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:05:53.0844603Z               "line": 206
2026-06-21T23:05:53.0844692Z             },
2026-06-21T23:05:53.0844768Z             {
2026-06-21T23:05:53.0844893Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:05:53.0844992Z               "line": 222
2026-06-21T23:05:53.0845078Z             },
2026-06-21T23:05:53.0845170Z             {
2026-06-21T23:05:53.0845289Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:05:53.0845379Z               "line": 238
2026-06-21T23:05:53.0845456Z             },
2026-06-21T23:05:53.0845537Z             {
2026-06-21T23:05:53.0845646Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:05:53.0845732Z               "line": 251
2026-06-21T23:05:53.0845819Z             },
2026-06-21T23:05:53.0845899Z             {
2026-06-21T23:05:53.0846013Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:05:53.0846100Z               "line": 258
2026-06-21T23:05:53.0846185Z             }
2026-06-21T23:05:53.0846261Z           ]
2026-06-21T23:05:53.0846347Z         }
2026-06-21T23:05:53.0846435Z       }
2026-06-21T23:05:53.0846514Z     },
2026-06-21T23:05:53.0846590Z     {
2026-06-21T23:05:53.0846694Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T23:05:53.0846878Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T23:05:53.0846977Z       "requiredStages": [
2026-06-21T23:05:53.0847064Z         "impl",
2026-06-21T23:05:53.0847141Z         "unit"
2026-06-21T23:05:53.0847216Z       ],
2026-06-21T23:05:53.0847301Z       "stages": {
2026-06-21T23:05:53.0847384Z         "doc": {
2026-06-21T23:05:53.0847479Z           "complete": false,
2026-06-21T23:05:53.0847564Z           "evidence": []
2026-06-21T23:05:53.0847645Z         },
2026-06-21T23:05:53.0847727Z         "impl": {
2026-06-21T23:05:53.0847813Z           "complete": true,
2026-06-21T23:05:53.0847908Z           "evidence": [
2026-06-21T23:05:53.0847989Z             {
2026-06-21T23:05:53.0848108Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0848189Z               "line": 18
2026-06-21T23:05:53.0848270Z             },
2026-06-21T23:05:53.0848348Z             {
2026-06-21T23:05:53.0848456Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0848542Z               "line": 35
2026-06-21T23:05:53.0848628Z             },
2026-06-21T23:05:53.0848710Z             {
2026-06-21T23:05:53.0848818Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0848904Z               "line": 72
2026-06-21T23:05:53.0849085Z             }
2026-06-21T23:05:53.0849186Z           ]
2026-06-21T23:05:53.0849267Z         },
2026-06-21T23:05:53.0849354Z         "int": {
2026-06-21T23:05:53.0849448Z           "complete": false,
2026-06-21T23:05:53.0849527Z           "evidence": []
2026-06-21T23:05:53.0849609Z         },
2026-06-21T23:05:53.0849689Z         "unit": {
2026-06-21T23:05:53.0849769Z           "complete": true,
2026-06-21T23:05:53.0849859Z           "evidence": [
2026-06-21T23:05:53.0849941Z             {
2026-06-21T23:05:53.0850051Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0850140Z               "line": 239
2026-06-21T23:05:53.0850370Z             },
2026-06-21T23:05:53.0850460Z             {
2026-06-21T23:05:53.0850566Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0850746Z               "line": 256
2026-06-21T23:05:53.0850817Z             },
2026-06-21T23:05:53.0850904Z             {
2026-06-21T23:05:53.0851013Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0851099Z               "line": 265
2026-06-21T23:05:53.0851190Z             }
2026-06-21T23:05:53.0851257Z           ]
2026-06-21T23:05:53.0851342Z         }
2026-06-21T23:05:53.0851423Z       }
2026-06-21T23:05:53.0851500Z     },
2026-06-21T23:05:53.0851582Z     {
2026-06-21T23:05:53.0851685Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T23:05:53.0851835Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T23:05:53.0851925Z       "requiredStages": [
2026-06-21T23:05:53.0852004Z         "impl",
2026-06-21T23:05:53.0852076Z         "unit"
2026-06-21T23:05:53.0852161Z       ],
2026-06-21T23:05:53.0852247Z       "stages": {
2026-06-21T23:05:53.0852331Z         "doc": {
2026-06-21T23:05:53.0852421Z           "complete": false,
2026-06-21T23:05:53.0852507Z           "evidence": []
2026-06-21T23:05:53.0852584Z         },
2026-06-21T23:05:53.0852664Z         "impl": {
2026-06-21T23:05:53.0852764Z           "complete": true,
2026-06-21T23:05:53.0852851Z           "evidence": [
2026-06-21T23:05:53.0852932Z             {
2026-06-21T23:05:53.0853055Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0853137Z               "line": 598
2026-06-21T23:05:53.0853213Z             }
2026-06-21T23:05:53.0853290Z           ]
2026-06-21T23:05:53.0853370Z         },
2026-06-21T23:05:53.0853447Z         "int": {
2026-06-21T23:05:53.0853533Z           "complete": false,
2026-06-21T23:05:53.0853623Z           "evidence": []
2026-06-21T23:05:53.0853704Z         },
2026-06-21T23:05:53.0853786Z         "unit": {
2026-06-21T23:05:53.0853871Z           "complete": true,
2026-06-21T23:05:53.0853957Z           "evidence": [
2026-06-21T23:05:53.0854033Z             {
2026-06-21T23:05:53.0854153Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0854242Z               "line": 967
2026-06-21T23:05:53.0854324Z             }
2026-06-21T23:05:53.0854406Z           ]
2026-06-21T23:05:53.0854478Z         }
2026-06-21T23:05:53.0854561Z       }
2026-06-21T23:05:53.0854638Z     },
2026-06-21T23:05:53.0854721Z     {
2026-06-21T23:05:53.0854816Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T23:05:53.0854980Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T23:05:53.0855076Z       "requiredStages": [
2026-06-21T23:05:53.0855159Z         "impl",
2026-06-21T23:05:53.0855238Z         "unit",
2026-06-21T23:05:53.0855314Z         "int"
2026-06-21T23:05:53.0855396Z       ],
2026-06-21T23:05:53.0855477Z       "stages": {
2026-06-21T23:05:53.0855557Z         "doc": {
2026-06-21T23:05:53.0855643Z           "complete": false,
2026-06-21T23:05:53.0855731Z           "evidence": []
2026-06-21T23:05:53.0855811Z         },
2026-06-21T23:05:53.0855896Z         "impl": {
2026-06-21T23:05:53.0856002Z           "complete": true,
2026-06-21T23:05:53.0856092Z           "evidence": [
2026-06-21T23:05:53.0856173Z             {
2026-06-21T23:05:53.0856287Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:05:53.0856370Z               "line": 24
2026-06-21T23:05:53.0856454Z             },
2026-06-21T23:05:53.0856535Z             {
2026-06-21T23:05:53.0856651Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:05:53.0856741Z               "line": 22
2026-06-21T23:05:53.0856821Z             }
2026-06-21T23:05:53.0856907Z           ]
2026-06-21T23:05:53.0856985Z         },
2026-06-21T23:05:53.0857074Z         "int": {
2026-06-21T23:05:53.0857164Z           "complete": true,
2026-06-21T23:05:53.0857254Z           "evidence": [
2026-06-21T23:05:53.0857340Z             {
2026-06-21T23:05:53.0857457Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:05:53.0857744Z               "line": 260
2026-06-21T23:05:53.0857824Z             }
2026-06-21T23:05:53.0857987Z           ]
2026-06-21T23:05:53.0858067Z         },
2026-06-21T23:05:53.0858148Z         "unit": {
2026-06-21T23:05:53.0858244Z           "complete": true,
2026-06-21T23:05:53.0858330Z           "evidence": [
2026-06-21T23:05:53.0858406Z             {
2026-06-21T23:05:53.0858510Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:05:53.0858593Z               "line": 171
2026-06-21T23:05:53.0858678Z             },
2026-06-21T23:05:53.0858763Z             {
2026-06-21T23:05:53.0858873Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:05:53.0859040Z               "line": 200
2026-06-21T23:05:53.0859164Z             },
2026-06-21T23:05:53.0859246Z             {
2026-06-21T23:05:53.0859354Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:05:53.0859441Z               "line": 220
2026-06-21T23:05:53.0859528Z             },
2026-06-21T23:05:53.0859617Z             {
2026-06-21T23:05:53.0859717Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:05:53.0859814Z               "line": 199
2026-06-21T23:05:53.0859890Z             },
2026-06-21T23:05:53.0859970Z             {
2026-06-21T23:05:53.0860069Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:05:53.0860150Z               "line": 219
2026-06-21T23:05:53.0860235Z             },
2026-06-21T23:05:53.0860315Z             {
2026-06-21T23:05:53.0860419Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:05:53.0860506Z               "line": 244
2026-06-21T23:05:53.0860587Z             },
2026-06-21T23:05:53.0860663Z             {
2026-06-21T23:05:53.0860767Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:05:53.0860854Z               "line": 276
2026-06-21T23:05:53.0860935Z             },
2026-06-21T23:05:53.0861020Z             {
2026-06-21T23:05:53.0861121Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:05:53.0861216Z               "line": 297
2026-06-21T23:05:53.0861297Z             },
2026-06-21T23:05:53.0861382Z             {
2026-06-21T23:05:53.0861493Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:05:53.0861574Z               "line": 324
2026-06-21T23:05:53.0861664Z             }
2026-06-21T23:05:53.0861740Z           ]
2026-06-21T23:05:53.0861831Z         }
2026-06-21T23:05:53.0861912Z       }
2026-06-21T23:05:53.0861988Z     },
2026-06-21T23:05:53.0862075Z     {
2026-06-21T23:05:53.0862156Z       "id": "REQ-SEAM-INJECT",
2026-06-21T23:05:53.0862312Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T23:05:53.0862414Z       "requiredStages": [
2026-06-21T23:05:53.0862499Z         "impl",
2026-06-21T23:05:53.0862574Z         "unit"
2026-06-21T23:05:53.0862654Z       ],
2026-06-21T23:05:53.0862731Z       "stages": {
2026-06-21T23:05:53.0862812Z         "doc": {
2026-06-21T23:05:53.0862896Z           "complete": false,
2026-06-21T23:05:53.0862976Z           "evidence": []
2026-06-21T23:05:53.0863058Z         },
2026-06-21T23:05:53.0863135Z         "impl": {
2026-06-21T23:05:53.0863234Z           "complete": true,
2026-06-21T23:05:53.0863324Z           "evidence": [
2026-06-21T23:05:53.0863397Z             {
2026-06-21T23:05:53.0863507Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0863591Z               "line": 19
2026-06-21T23:05:53.0863668Z             },
2026-06-21T23:05:53.0863750Z             {
2026-06-21T23:05:53.0863864Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0863954Z               "line": 111
2026-06-21T23:05:53.0864026Z             }
2026-06-21T23:05:53.0864112Z           ]
2026-06-21T23:05:53.0864188Z         },
2026-06-21T23:05:53.0864274Z         "int": {
2026-06-21T23:05:53.0864356Z           "complete": false,
2026-06-21T23:05:53.0864441Z           "evidence": []
2026-06-21T23:05:53.0864522Z         },
2026-06-21T23:05:53.0864598Z         "unit": {
2026-06-21T23:05:53.0864822Z           "complete": true,
2026-06-21T23:05:53.0864908Z           "evidence": [
2026-06-21T23:05:53.0865098Z             {
2026-06-21T23:05:53.0865208Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0865295Z               "line": 345
2026-06-21T23:05:53.0865376Z             },
2026-06-21T23:05:53.0865455Z             {
2026-06-21T23:05:53.0865559Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0865651Z               "line": 365
2026-06-21T23:05:53.0865733Z             }
2026-06-21T23:05:53.0865807Z           ]
2026-06-21T23:05:53.0865888Z         }
2026-06-21T23:05:53.0865966Z       }
2026-06-21T23:05:53.0866042Z     },
2026-06-21T23:05:53.0866132Z     {
2026-06-21T23:05:53.0866271Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T23:05:53.0866461Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T23:05:53.0866571Z       "requiredStages": [
2026-06-21T23:05:53.0866695Z         "impl",
2026-06-21T23:05:53.0866785Z         "unit"
2026-06-21T23:05:53.0866867Z       ],
2026-06-21T23:05:53.0866958Z       "stages": {
2026-06-21T23:05:53.0867038Z         "doc": {
2026-06-21T23:05:53.0867133Z           "complete": false,
2026-06-21T23:05:53.0867220Z           "evidence": []
2026-06-21T23:05:53.0867305Z         },
2026-06-21T23:05:53.0867396Z         "impl": {
2026-06-21T23:05:53.0867472Z           "complete": true,
2026-06-21T23:05:53.0867564Z           "evidence": [
2026-06-21T23:05:53.0867644Z             {
2026-06-21T23:05:53.0867752Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.0867833Z               "line": 18
2026-06-21T23:05:53.0867919Z             },
2026-06-21T23:05:53.0867998Z             {
2026-06-21T23:05:53.0868112Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.0868203Z               "line": 431
2026-06-21T23:05:53.0868271Z             }
2026-06-21T23:05:53.0868351Z           ]
2026-06-21T23:05:53.0868431Z         },
2026-06-21T23:05:53.0868508Z         "int": {
2026-06-21T23:05:53.0868604Z           "complete": false,
2026-06-21T23:05:53.0868684Z           "evidence": []
2026-06-21T23:05:53.0868760Z         },
2026-06-21T23:05:53.0868843Z         "unit": {
2026-06-21T23:05:53.0869018Z           "complete": true,
2026-06-21T23:05:53.0869148Z           "evidence": [
2026-06-21T23:05:53.0869262Z             {
2026-06-21T23:05:53.0869371Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.0869463Z               "line": 881
2026-06-21T23:05:53.0869538Z             },
2026-06-21T23:05:53.0869619Z             {
2026-06-21T23:05:53.0869729Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.0869811Z               "line": 891
2026-06-21T23:05:53.0869891Z             }
2026-06-21T23:05:53.0870005Z           ]
2026-06-21T23:05:53.0870102Z         }
2026-06-21T23:05:53.0870187Z       }
2026-06-21T23:05:53.0870263Z     },
2026-06-21T23:05:53.0870339Z     {
2026-06-21T23:05:53.0870436Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T23:05:53.0870586Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T23:05:53.0870696Z       "requiredStages": [
2026-06-21T23:05:53.0870805Z         "impl",
2026-06-21T23:05:53.0870927Z         "unit",
2026-06-21T23:05:53.0871013Z         "int"
2026-06-21T23:05:53.0871099Z       ],
2026-06-21T23:05:53.0871180Z       "stages": {
2026-06-21T23:05:53.0871261Z         "doc": {
2026-06-21T23:05:53.0871356Z           "complete": false,
2026-06-21T23:05:53.0871433Z           "evidence": []
2026-06-21T23:05:53.0871509Z         },
2026-06-21T23:05:53.0871590Z         "impl": {
2026-06-21T23:05:53.0871710Z           "complete": true,
2026-06-21T23:05:53.0871815Z           "evidence": [
2026-06-21T23:05:53.0871890Z             {
2026-06-21T23:05:53.0872000Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T23:05:53.0872077Z               "line": 19
2026-06-21T23:05:53.0872162Z             },
2026-06-21T23:05:53.0872243Z             {
2026-06-21T23:05:53.0872349Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T23:05:53.0872611Z               "line": 12
2026-06-21T23:05:53.0872702Z             },
2026-06-21T23:05:53.0872887Z             {
2026-06-21T23:05:53.0872993Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.0873078Z               "line": 301
2026-06-21T23:05:53.0873158Z             }
2026-06-21T23:05:53.0873238Z           ]
2026-06-21T23:05:53.0873348Z         },
2026-06-21T23:05:53.0873456Z         "int": {
2026-06-21T23:05:53.0873555Z           "complete": true,
2026-06-21T23:05:53.0873646Z           "evidence": [
2026-06-21T23:05:53.0873761Z             {
2026-06-21T23:05:53.0873899Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:05:53.0873991Z               "line": 259
2026-06-21T23:05:53.0874062Z             }
2026-06-21T23:05:53.0874180Z           ]
2026-06-21T23:05:53.0874291Z         },
2026-06-21T23:05:53.0874371Z         "unit": {
2026-06-21T23:05:53.0874462Z           "complete": true,
2026-06-21T23:05:53.0874553Z           "evidence": [
2026-06-21T23:05:53.0874643Z             {
2026-06-21T23:05:53.0874748Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T23:05:53.0874839Z               "line": 195
2026-06-21T23:05:53.0874916Z             },
2026-06-21T23:05:53.0875024Z             {
2026-06-21T23:05:53.0875187Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T23:05:53.0875287Z               "line": 202
2026-06-21T23:05:53.0875367Z             },
2026-06-21T23:05:53.0875444Z             {
2026-06-21T23:05:53.0875550Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T23:05:53.0875640Z               "line": 225
2026-06-21T23:05:53.0875716Z             },
2026-06-21T23:05:53.0875798Z             {
2026-06-21T23:05:53.0875917Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T23:05:53.0876039Z               "line": 106
2026-06-21T23:05:53.0876134Z             },
2026-06-21T23:05:53.0876216Z             {
2026-06-21T23:05:53.0876330Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T23:05:53.0876411Z               "line": 137
2026-06-21T23:05:53.0876497Z             },
2026-06-21T23:05:53.0876578Z             {
2026-06-21T23:05:53.0876687Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T23:05:53.0876788Z               "line": 161
2026-06-21T23:05:53.0876903Z             }
2026-06-21T23:05:53.0876993Z           ]
2026-06-21T23:05:53.0877074Z         }
2026-06-21T23:05:53.0877160Z       }
2026-06-21T23:05:53.0877241Z     },
2026-06-21T23:05:53.0877326Z     {
2026-06-21T23:05:53.0877427Z       "id": "REQ-SEAM-RESUME",
2026-06-21T23:05:53.0877618Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T23:05:53.0877747Z       "requiredStages": [
2026-06-21T23:05:53.0877828Z         "impl",
2026-06-21T23:05:53.0877922Z         "unit"
2026-06-21T23:05:53.0877989Z       ],
2026-06-21T23:05:53.0878071Z       "stages": {
2026-06-21T23:05:53.0878157Z         "doc": {
2026-06-21T23:05:53.0878246Z           "complete": false,
2026-06-21T23:05:53.0878341Z           "evidence": []
2026-06-21T23:05:53.0878427Z         },
2026-06-21T23:05:53.0878549Z         "impl": {
2026-06-21T23:05:53.0878635Z           "complete": true,
2026-06-21T23:05:53.0878730Z           "evidence": [
2026-06-21T23:05:53.0878811Z             {
2026-06-21T23:05:53.0878920Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:05:53.0879117Z               "line": 19
2026-06-21T23:05:53.0879207Z             }
2026-06-21T23:05:53.0879297Z           ]
2026-06-21T23:05:53.0879379Z         },
2026-06-21T23:05:53.0879469Z         "int": {
2026-06-21T23:05:53.0879554Z           "complete": false,
2026-06-21T23:05:53.0879640Z           "evidence": []
2026-06-21T23:05:53.0879727Z         },
2026-06-21T23:05:53.0879803Z         "unit": {
2026-06-21T23:05:53.0879926Z           "complete": true,
2026-06-21T23:05:53.0880037Z           "evidence": [
2026-06-21T23:05:53.0880112Z             {
2026-06-21T23:05:53.0880222Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:05:53.0880489Z               "line": 201
2026-06-21T23:05:53.0880657Z             },
2026-06-21T23:05:53.0880765Z             {
2026-06-21T23:05:53.0880895Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:05:53.0880977Z               "line": 223
2026-06-21T23:05:53.0881062Z             },
2026-06-21T23:05:53.0881151Z             {
2026-06-21T23:05:53.0881251Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:05:53.0881337Z               "line": 244
2026-06-21T23:05:53.0881421Z             }
2026-06-21T23:05:53.0881511Z           ]
2026-06-21T23:05:53.0881611Z         }
2026-06-21T23:05:53.0881707Z       }
2026-06-21T23:05:53.0881792Z     },
2026-06-21T23:05:53.0881873Z     {
2026-06-21T23:05:53.0881970Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T23:05:53.0882069Z       "title": "spawn-session seam",
2026-06-21T23:05:53.0882155Z       "requiredStages": [
2026-06-21T23:05:53.0882231Z         "impl",
2026-06-21T23:05:53.0882336Z         "unit"
2026-06-21T23:05:53.0882450Z       ],
2026-06-21T23:05:53.0882541Z       "stages": {
2026-06-21T23:05:53.0882632Z         "doc": {
2026-06-21T23:05:53.0882718Z           "complete": false,
2026-06-21T23:05:53.0882817Z           "evidence": []
2026-06-21T23:05:53.0882895Z         },
2026-06-21T23:05:53.0882989Z         "impl": {
2026-06-21T23:05:53.0883075Z           "complete": true,
2026-06-21T23:05:53.0883176Z           "evidence": [
2026-06-21T23:05:53.0883290Z             {
2026-06-21T23:05:53.0883419Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0883501Z               "line": 20
2026-06-21T23:05:53.0883582Z             }
2026-06-21T23:05:53.0883666Z           ]
2026-06-21T23:05:53.0883751Z         },
2026-06-21T23:05:53.0883832Z         "int": {
2026-06-21T23:05:53.0883927Z           "complete": false,
2026-06-21T23:05:53.0884030Z           "evidence": []
2026-06-21T23:05:53.0884149Z         },
2026-06-21T23:05:53.0884231Z         "unit": {
2026-06-21T23:05:53.0884331Z           "complete": true,
2026-06-21T23:05:53.0884420Z           "evidence": [
2026-06-21T23:05:53.0884508Z             {
2026-06-21T23:05:53.0884627Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0884712Z               "line": 608
2026-06-21T23:05:53.0884803Z             },
2026-06-21T23:05:53.0884913Z             {
2026-06-21T23:05:53.0885041Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0885138Z               "line": 615
2026-06-21T23:05:53.0885218Z             },
2026-06-21T23:05:53.0885304Z             {
2026-06-21T23:05:53.0885462Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0885552Z               "line": 721
2026-06-21T23:05:53.0885637Z             },
2026-06-21T23:05:53.0885752Z             {
2026-06-21T23:05:53.0885875Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0885957Z               "line": 727
2026-06-21T23:05:53.0886043Z             },
2026-06-21T23:05:53.0886124Z             {
2026-06-21T23:05:53.0886242Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0886333Z               "line": 752
2026-06-21T23:05:53.0886421Z             },
2026-06-21T23:05:53.0886538Z             {
2026-06-21T23:05:53.0886675Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:05:53.0886761Z               "line": 789
2026-06-21T23:05:53.0886834Z             }
2026-06-21T23:05:53.0886919Z           ]
2026-06-21T23:05:53.0887000Z         }
2026-06-21T23:05:53.0887081Z       }
2026-06-21T23:05:53.0887162Z     },
2026-06-21T23:05:53.0887229Z     {
2026-06-21T23:05:53.0887358Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T23:05:53.0887539Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T23:05:53.0887639Z       "requiredStages": [
2026-06-21T23:05:53.0887720Z         "impl",
2026-06-21T23:05:53.0887796Z         "unit"
2026-06-21T23:05:53.0887887Z       ],
2026-06-21T23:05:53.0888050Z       "stages": {
2026-06-21T23:05:53.0888153Z         "doc": {
2026-06-21T23:05:53.0888273Z           "complete": false,
2026-06-21T23:05:53.0888463Z           "evidence": []
2026-06-21T23:05:53.0888535Z         },
2026-06-21T23:05:53.0888616Z         "impl": {
2026-06-21T23:05:53.0888708Z           "complete": true,
2026-06-21T23:05:53.0888797Z           "evidence": [
2026-06-21T23:05:53.0888882Z             {
2026-06-21T23:05:53.0889128Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.0889218Z               "line": 28
2026-06-21T23:05:53.0889295Z             },
2026-06-21T23:05:53.0889381Z             {
2026-06-21T23:05:53.0889504Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.0889590Z               "line": 88
2026-06-21T23:05:53.0889672Z             }
2026-06-21T23:05:53.0889753Z           ]
2026-06-21T23:05:53.0889862Z         },
2026-06-21T23:05:53.0889968Z         "int": {
2026-06-21T23:05:53.0890063Z           "complete": false,
2026-06-21T23:05:53.0890162Z           "evidence": []
2026-06-21T23:05:53.0890244Z         },
2026-06-21T23:05:53.0890339Z         "unit": {
2026-06-21T23:05:53.0890425Z           "complete": true,
2026-06-21T23:05:53.0890515Z           "evidence": [
2026-06-21T23:05:53.0890592Z             {
2026-06-21T23:05:53.0890777Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.0890869Z               "line": 326
2026-06-21T23:05:53.0890951Z             },
2026-06-21T23:05:53.0891030Z             {
2026-06-21T23:05:53.0891155Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.0891246Z               "line": 337
2026-06-21T23:05:53.0891326Z             }
2026-06-21T23:05:53.0891398Z           ]
2026-06-21T23:05:53.0891499Z         }
2026-06-21T23:05:53.0891608Z       }
2026-06-21T23:05:53.0891697Z     },
2026-06-21T23:05:53.0891778Z     {
2026-06-21T23:05:53.0891864Z       "id": "REQ-SEC-1",
2026-06-21T23:05:53.0892248Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T23:05:53.0892395Z       "requiredStages": [
2026-06-21T23:05:53.0892486Z         "impl",
2026-06-21T23:05:53.0892572Z         "unit"
2026-06-21T23:05:53.0892644Z       ],
2026-06-21T23:05:53.0892724Z       "stages": {
2026-06-21T23:05:53.0892801Z         "doc": {
2026-06-21T23:05:53.0892887Z           "complete": false,
2026-06-21T23:05:53.0892982Z           "evidence": []
2026-06-21T23:05:53.0893058Z         },
2026-06-21T23:05:53.0893159Z         "impl": {
2026-06-21T23:05:53.0893287Z           "complete": true,
2026-06-21T23:05:53.0893378Z           "evidence": [
2026-06-21T23:05:53.0893465Z             {
2026-06-21T23:05:53.0893583Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:05:53.0893659Z               "line": 86
2026-06-21T23:05:53.0893741Z             },
2026-06-21T23:05:53.0893813Z             {
2026-06-21T23:05:53.0893926Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:05:53.0894036Z               "line": 116
2026-06-21T23:05:53.0894137Z             },
2026-06-21T23:05:53.0894212Z             {
2026-06-21T23:05:53.0894316Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:05:53.0894401Z               "line": 130
2026-06-21T23:05:53.0894482Z             },
2026-06-21T23:05:53.0894562Z             {
2026-06-21T23:05:53.0894666Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:05:53.0894762Z               "line": 109
2026-06-21T23:05:53.0894867Z             },
2026-06-21T23:05:53.0894962Z             {
2026-06-21T23:05:53.0895082Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:05:53.0895158Z               "line": 130
2026-06-21T23:05:53.0895234Z             },
2026-06-21T23:05:53.0895319Z             {
2026-06-21T23:05:53.0895425Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:05:53.0895515Z               "line": 143
2026-06-21T23:05:53.0895768Z             },
2026-06-21T23:05:53.0895864Z             {
2026-06-21T23:05:53.0895973Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:05:53.0896150Z               "line": 209
2026-06-21T23:05:53.0896231Z             },
2026-06-21T23:05:53.0896312Z             {
2026-06-21T23:05:53.0896431Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:05:53.0896545Z               "line": 235
2026-06-21T23:05:53.0896627Z             },
2026-06-21T23:05:53.0896708Z             {
2026-06-21T23:05:53.0896812Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0896903Z               "line": 5295
2026-06-21T23:05:53.0896990Z             }
2026-06-21T23:05:53.0897070Z           ]
2026-06-21T23:05:53.0897141Z         },
2026-06-21T23:05:53.0897226Z         "int": {
2026-06-21T23:05:53.0897336Z           "complete": false,
2026-06-21T23:05:53.0897436Z           "evidence": []
2026-06-21T23:05:53.0897507Z         },
2026-06-21T23:05:53.0897583Z         "unit": {
2026-06-21T23:05:53.0897690Z           "complete": true,
2026-06-21T23:05:53.0897779Z           "evidence": [
2026-06-21T23:05:53.0897879Z             {
2026-06-21T23:05:53.0897999Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:05:53.0898118Z               "line": 142
2026-06-21T23:05:53.0898227Z             },
2026-06-21T23:05:53.0898309Z             {
2026-06-21T23:05:53.0898419Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:05:53.0898499Z               "line": 194
2026-06-21T23:05:53.0898582Z             },
2026-06-21T23:05:53.0898667Z             {
2026-06-21T23:05:53.0898785Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:05:53.0898867Z               "line": 235
2026-06-21T23:05:53.0899056Z             },
2026-06-21T23:05:53.0899162Z             {
2026-06-21T23:05:53.0899282Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T23:05:53.0899367Z               "line": 140
2026-06-21T23:05:53.0899466Z             },
2026-06-21T23:05:53.0899576Z             {
2026-06-21T23:05:53.0899684Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:05:53.0899788Z               "line": 247
2026-06-21T23:05:53.0899903Z             },
2026-06-21T23:05:53.0899989Z             {
2026-06-21T23:05:53.0900098Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:05:53.0900180Z               "line": 277
2026-06-21T23:05:53.0900265Z             },
2026-06-21T23:05:53.0900346Z             {
2026-06-21T23:05:53.0900451Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:05:53.0900533Z               "line": 310
2026-06-21T23:05:53.0900618Z             },
2026-06-21T23:05:53.0900727Z             {
2026-06-21T23:05:53.0900843Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:05:53.0900928Z               "line": 329
2026-06-21T23:05:53.0901009Z             },
2026-06-21T23:05:53.0901094Z             {
2026-06-21T23:05:53.0901205Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:05:53.0901291Z               "line": 362
2026-06-21T23:05:53.0901371Z             },
2026-06-21T23:05:53.0901463Z             {
2026-06-21T23:05:53.0901624Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:05:53.0901710Z               "line": 386
2026-06-21T23:05:53.0901797Z             },
2026-06-21T23:05:53.0901877Z             {
2026-06-21T23:05:53.0901981Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0902068Z               "line": 8296
2026-06-21T23:05:53.0902145Z             }
2026-06-21T23:05:53.0902220Z           ]
2026-06-21T23:05:53.0902319Z         }
2026-06-21T23:05:53.0902433Z       }
2026-06-21T23:05:53.0902518Z     },
2026-06-21T23:05:53.0902598Z     {
2026-06-21T23:05:53.0902703Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T23:05:53.0906762Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T23:05:53.0907115Z       "requiredStages": [
2026-06-21T23:05:53.0907207Z         "impl",
2026-06-21T23:05:53.0907315Z         "unit",
2026-06-21T23:05:53.0907415Z         "int"
2026-06-21T23:05:53.0907502Z       ],
2026-06-21T23:05:53.0907583Z       "stages": {
2026-06-21T23:05:53.0907667Z         "doc": {
2026-06-21T23:05:53.0907766Z           "complete": false,
2026-06-21T23:05:53.0907848Z           "evidence": []
2026-06-21T23:05:53.0907921Z         },
2026-06-21T23:05:53.0908001Z         "impl": {
2026-06-21T23:05:53.0908115Z           "complete": true,
2026-06-21T23:05:53.0908235Z           "evidence": [
2026-06-21T23:05:53.0908316Z             {
2026-06-21T23:05:53.0908429Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:53.0908521Z               "line": 1160
2026-06-21T23:05:53.0908602Z             },
2026-06-21T23:05:53.0908682Z             {
2026-06-21T23:05:53.0908788Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:53.0908883Z               "line": 1942
2026-06-21T23:05:53.0909059Z             },
2026-06-21T23:05:53.0909170Z             {
2026-06-21T23:05:53.0909279Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0909369Z               "line": 2850
2026-06-21T23:05:53.0909447Z             }
2026-06-21T23:05:53.0909532Z           ]
2026-06-21T23:05:53.0909612Z         },
2026-06-21T23:05:53.0909693Z         "int": {
2026-06-21T23:05:53.0909786Z           "complete": true,
2026-06-21T23:05:53.0909898Z           "evidence": [
2026-06-21T23:05:53.0909998Z             {
2026-06-21T23:05:53.0910122Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:05:53.0910202Z               "line": 189
2026-06-21T23:05:53.0910277Z             },
2026-06-21T23:05:53.0910362Z             {
2026-06-21T23:05:53.0910483Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:05:53.0914355Z               "line": 524
2026-06-21T23:05:53.0914469Z             }
2026-06-21T23:05:53.0914561Z           ]
2026-06-21T23:05:53.0914647Z         },
2026-06-21T23:05:53.0914726Z         "unit": {
2026-06-21T23:05:53.0914851Z           "complete": true,
2026-06-21T23:05:53.0914957Z           "evidence": [
2026-06-21T23:05:53.0915036Z             {
2026-06-21T23:05:53.0915161Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:53.0915258Z               "line": 980
2026-06-21T23:05:53.0915342Z             },
2026-06-21T23:05:53.0915417Z             {
2026-06-21T23:05:53.0915522Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0915631Z               "line": 7486
2026-06-21T23:05:53.0915734Z             }
2026-06-21T23:05:53.0915820Z           ]
2026-06-21T23:05:53.0915902Z         }
2026-06-21T23:05:53.0915983Z       }
2026-06-21T23:05:53.0916053Z     },
2026-06-21T23:05:53.0916144Z     {
2026-06-21T23:05:53.0916255Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T23:05:53.0923444Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T23:05:53.0923838Z       "requiredStages": [
2026-06-21T23:05:53.0923952Z         "doc",
2026-06-21T23:05:53.0924038Z         "impl",
2026-06-21T23:05:53.0924114Z         "unit",
2026-06-21T23:05:53.0924201Z         "int"
2026-06-21T23:05:53.0924276Z       ],
2026-06-21T23:05:53.0924357Z       "stages": {
2026-06-21T23:05:53.0924428Z         "doc": {
2026-06-21T23:05:53.0924520Z           "complete": true,
2026-06-21T23:05:53.0924601Z           "evidence": [
2026-06-21T23:05:53.0924686Z             {
2026-06-21T23:05:53.0924830Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T23:05:53.0924934Z               "line": 130
2026-06-21T23:05:53.0925043Z             },
2026-06-21T23:05:53.0925145Z             {
2026-06-21T23:05:53.0925244Z               "path": "docs/MANIFEST.md",
2026-06-21T23:05:53.0925335Z               "line": 96
2026-06-21T23:05:53.0925416Z             }
2026-06-21T23:05:53.0925493Z           ]
2026-06-21T23:05:53.0925564Z         },
2026-06-21T23:05:53.0925645Z         "impl": {
2026-06-21T23:05:53.0925731Z           "complete": true,
2026-06-21T23:05:53.0925827Z           "evidence": [
2026-06-21T23:05:53.0925907Z             {
2026-06-21T23:05:53.0926043Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:53.0926135Z               "line": 77
2026-06-21T23:05:53.0926219Z             },
2026-06-21T23:05:53.0926304Z             {
2026-06-21T23:05:53.0926423Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:53.0926515Z               "line": 183
2026-06-21T23:05:53.0926585Z             },
2026-06-21T23:05:53.0926671Z             {
2026-06-21T23:05:53.0926796Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0926877Z               "line": 222
2026-06-21T23:05:53.0926962Z             },
2026-06-21T23:05:53.0927144Z             {
2026-06-21T23:05:53.0927257Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:05:53.0927402Z               "line": 71
2026-06-21T23:05:53.0927486Z             },
2026-06-21T23:05:53.0927572Z             {
2026-06-21T23:05:53.0927688Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0927773Z               "line": 176
2026-06-21T23:05:53.0927850Z             }
2026-06-21T23:05:53.0927940Z           ]
2026-06-21T23:05:53.0928017Z         },
2026-06-21T23:05:53.0928107Z         "int": {
2026-06-21T23:05:53.0928188Z           "complete": true,
2026-06-21T23:05:53.0928274Z           "evidence": [
2026-06-21T23:05:53.0928356Z             {
2026-06-21T23:05:53.0928482Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T23:05:53.0928564Z               "line": 25
2026-06-21T23:05:53.0928642Z             }
2026-06-21T23:05:53.0928728Z           ]
2026-06-21T23:05:53.0928811Z         },
2026-06-21T23:05:53.0928892Z         "unit": {
2026-06-21T23:05:53.0929084Z           "complete": true,
2026-06-21T23:05:53.0929192Z           "evidence": [
2026-06-21T23:05:53.0929283Z             {
2026-06-21T23:05:53.0929413Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:53.0929497Z               "line": 341
2026-06-21T23:05:53.0929584Z             },
2026-06-21T23:05:53.0929666Z             {
2026-06-21T23:05:53.0929788Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:05:53.0929869Z               "line": 391
2026-06-21T23:05:53.0929952Z             },
2026-06-21T23:05:53.0930037Z             {
2026-06-21T23:05:53.0930165Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0930247Z               "line": 1244
2026-06-21T23:05:53.0930333Z             },
2026-06-21T23:05:53.0930414Z             {
2026-06-21T23:05:53.0930518Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:05:53.0930615Z               "line": 184
2026-06-21T23:05:53.0930699Z             },
2026-06-21T23:05:53.0930775Z             {
2026-06-21T23:05:53.0930896Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:05:53.0930986Z               "line": 208
2026-06-21T23:05:53.0931075Z             },
2026-06-21T23:05:53.0931156Z             {
2026-06-21T23:05:53.0931275Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:05:53.0931359Z               "line": 236
2026-06-21T23:05:53.0931435Z             },
2026-06-21T23:05:53.0931530Z             {
2026-06-21T23:05:53.0931632Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:05:53.0931721Z               "line": 945
2026-06-21T23:05:53.0931792Z             }
2026-06-21T23:05:53.0931874Z           ]
2026-06-21T23:05:53.0931955Z         }
2026-06-21T23:05:53.0932036Z       }
2026-06-21T23:05:53.0932121Z     },
2026-06-21T23:05:53.0932199Z     {
2026-06-21T23:05:53.0932294Z       "id": "REQ-SHELL-1",
2026-06-21T23:05:53.0933139Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T23:05:53.0933242Z       "requiredStages": [
2026-06-21T23:05:53.0933324Z         "impl",
2026-06-21T23:05:53.0933405Z         "unit",
2026-06-21T23:05:53.0933491Z         "int"
2026-06-21T23:05:53.0933571Z       ],
2026-06-21T23:05:53.0933657Z       "stages": {
2026-06-21T23:05:53.0933744Z         "doc": {
2026-06-21T23:05:53.0933825Z           "complete": false,
2026-06-21T23:05:53.0933914Z           "evidence": []
2026-06-21T23:05:53.0933985Z         },
2026-06-21T23:05:53.0934071Z         "impl": {
2026-06-21T23:05:53.0934161Z           "complete": true,
2026-06-21T23:05:53.0934250Z           "evidence": [
2026-06-21T23:05:53.0934325Z             {
2026-06-21T23:05:53.0934446Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0934640Z               "line": 189
2026-06-21T23:05:53.0934717Z             },
2026-06-21T23:05:53.0934898Z             {
2026-06-21T23:05:53.0935008Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0935094Z               "line": 268
2026-06-21T23:05:53.0935180Z             },
2026-06-21T23:05:53.0935265Z             {
2026-06-21T23:05:53.0935381Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:05:53.0935466Z               "line": 27
2026-06-21T23:05:53.0935542Z             },
2026-06-21T23:05:53.0935623Z             {
2026-06-21T23:05:53.0935743Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:05:53.0935828Z               "line": 52
2026-06-21T23:05:53.0935909Z             },
2026-06-21T23:05:53.0935996Z             {
2026-06-21T23:05:53.0936105Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:05:53.0936195Z               "line": 144
2026-06-21T23:05:53.0936287Z             },
2026-06-21T23:05:53.0936373Z             {
2026-06-21T23:05:53.0936486Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:05:53.0936575Z               "line": 176
2026-06-21T23:05:53.0936662Z             },
2026-06-21T23:05:53.0936737Z             {
2026-06-21T23:05:53.0936850Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0936930Z               "line": 22
2026-06-21T23:05:53.0937022Z             },
2026-06-21T23:05:53.0937104Z             {
2026-06-21T23:05:53.0937212Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0937299Z               "line": 65
2026-06-21T23:05:53.0937380Z             },
2026-06-21T23:05:53.0937465Z             {
2026-06-21T23:05:53.0937570Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0937657Z               "line": 76
2026-06-21T23:05:53.0937747Z             },
2026-06-21T23:05:53.0937827Z             {
2026-06-21T23:05:53.0937952Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0938033Z               "line": 151
2026-06-21T23:05:53.0938132Z             },
2026-06-21T23:05:53.0938213Z             {
2026-06-21T23:05:53.0938324Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0938405Z               "line": 210
2026-06-21T23:05:53.0938485Z             },
2026-06-21T23:05:53.0938572Z             {
2026-06-21T23:05:53.0938672Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0938762Z               "line": 259
2026-06-21T23:05:53.0938843Z             },
2026-06-21T23:05:53.0938925Z             {
2026-06-21T23:05:53.0939197Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0939283Z               "line": 281
2026-06-21T23:05:53.0939367Z             },
2026-06-21T23:05:53.0939443Z             {
2026-06-21T23:05:53.0939557Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0939649Z               "line": 294
2026-06-21T23:05:53.0939728Z             },
2026-06-21T23:05:53.0939809Z             {
2026-06-21T23:05:53.0939920Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:53.0940011Z               "line": 217
2026-06-21T23:05:53.0940086Z             },
2026-06-21T23:05:53.0940168Z             {
2026-06-21T23:05:53.0940277Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:53.0940358Z               "line": 233
2026-06-21T23:05:53.0940439Z             },
2026-06-21T23:05:53.0940521Z             {
2026-06-21T23:05:53.0940635Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:53.0940711Z               "line": 41
2026-06-21T23:05:53.0940793Z             },
2026-06-21T23:05:53.0940879Z             {
2026-06-21T23:05:53.0940988Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:53.0941078Z               "line": 222
2026-06-21T23:05:53.0941156Z             },
2026-06-21T23:05:53.0941236Z             {
2026-06-21T23:05:53.0941451Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:05:53.0941541Z               "line": 173
2026-06-21T23:05:53.0941716Z             },
2026-06-21T23:05:53.0941793Z             {
2026-06-21T23:05:53.0941900Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:53.0941986Z               "line": 354
2026-06-21T23:05:53.0942072Z             },
2026-06-21T23:05:53.0942153Z             {
2026-06-21T23:05:53.0942253Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:53.0942343Z               "line": 419
2026-06-21T23:05:53.0942415Z             },
2026-06-21T23:05:53.0942497Z             {
2026-06-21T23:05:53.0942610Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0942701Z               "line": 333
2026-06-21T23:05:53.0942783Z             },
2026-06-21T23:05:53.0942868Z             {
2026-06-21T23:05:53.0942973Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0943055Z               "line": 6320
2026-06-21T23:05:53.0943140Z             },
2026-06-21T23:05:53.0943216Z             {
2026-06-21T23:05:53.0943316Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0943413Z               "line": 6470
2026-06-21T23:05:53.0943483Z             },
2026-06-21T23:05:53.0943564Z             {
2026-06-21T23:05:53.0943660Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0943737Z               "line": 6646
2026-06-21T23:05:53.0943817Z             }
2026-06-21T23:05:53.0943898Z           ]
2026-06-21T23:05:53.0943985Z         },
2026-06-21T23:05:53.0944056Z         "int": {
2026-06-21T23:05:53.0944150Z           "complete": true,
2026-06-21T23:05:53.0944222Z           "evidence": [
2026-06-21T23:05:53.0944304Z             {
2026-06-21T23:05:53.0944423Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:53.0944512Z               "line": 713
2026-06-21T23:05:53.0944597Z             },
2026-06-21T23:05:53.0944669Z             {
2026-06-21T23:05:53.0944791Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T23:05:53.0944876Z               "line": 8
2026-06-21T23:05:53.0944962Z             },
2026-06-21T23:05:53.0945044Z             {
2026-06-21T23:05:53.0945167Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T23:05:53.0945258Z               "line": 49
2026-06-21T23:05:53.0945340Z             },
2026-06-21T23:05:53.0945426Z             {
2026-06-21T23:05:53.0945539Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0945631Z               "line": 778
2026-06-21T23:05:53.0945712Z             },
2026-06-21T23:05:53.0945797Z             {
2026-06-21T23:05:53.0945907Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0945998Z               "line": 1213
2026-06-21T23:05:53.0946083Z             },
2026-06-21T23:05:53.0946164Z             {
2026-06-21T23:05:53.0946284Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T23:05:53.0946369Z               "line": 17
2026-06-21T23:05:53.0946460Z             },
2026-06-21T23:05:53.0946541Z             {
2026-06-21T23:05:53.0946656Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T23:05:53.0946741Z               "line": 14
2026-06-21T23:05:53.0946822Z             }
2026-06-21T23:05:53.0946905Z           ]
2026-06-21T23:05:53.0946985Z         },
2026-06-21T23:05:53.0947074Z         "unit": {
2026-06-21T23:05:53.0947155Z           "complete": true,
2026-06-21T23:05:53.0947236Z           "evidence": [
2026-06-21T23:05:53.0947316Z             {
2026-06-21T23:05:53.0947419Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:05:53.0947500Z               "line": 246
2026-06-21T23:05:53.0947572Z             },
2026-06-21T23:05:53.0947659Z             {
2026-06-21T23:05:53.0947777Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:05:53.0947859Z               "line": 279
2026-06-21T23:05:53.0947940Z             },
2026-06-21T23:05:53.0948021Z             {
2026-06-21T23:05:53.0948235Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:05:53.0948321Z               "line": 319
2026-06-21T23:05:53.0948479Z             },
2026-06-21T23:05:53.0948560Z             {
2026-06-21T23:05:53.0948665Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0948750Z               "line": 599
2026-06-21T23:05:53.0948832Z             },
2026-06-21T23:05:53.0948908Z             {
2026-06-21T23:05:53.0949084Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0949170Z               "line": 672
2026-06-21T23:05:53.0949260Z             },
2026-06-21T23:05:53.0949341Z             {
2026-06-21T23:05:53.0949452Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0949537Z               "line": 816
2026-06-21T23:05:53.0949622Z             },
2026-06-21T23:05:53.0949704Z             {
2026-06-21T23:05:53.0949810Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:53.0949904Z               "line": 595
2026-06-21T23:05:53.0949984Z             },
2026-06-21T23:05:53.0950070Z             {
2026-06-21T23:05:53.0950185Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:05:53.0950265Z               "line": 399
2026-06-21T23:05:53.0950351Z             },
2026-06-21T23:05:53.0950427Z             {
2026-06-21T23:05:53.0950533Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0950613Z               "line": 8976
2026-06-21T23:05:53.0950694Z             },
2026-06-21T23:05:53.0950776Z             {
2026-06-21T23:05:53.0950872Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0950951Z               "line": 9300
2026-06-21T23:05:53.0951028Z             },
2026-06-21T23:05:53.0951119Z             {
2026-06-21T23:05:53.0951215Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0951309Z               "line": 9717
2026-06-21T23:05:53.0951391Z             }
2026-06-21T23:05:53.0951477Z           ]
2026-06-21T23:05:53.0951558Z         }
2026-06-21T23:05:53.0951629Z       }
2026-06-21T23:05:53.0951711Z     },
2026-06-21T23:05:53.0951805Z     {
2026-06-21T23:05:53.0951905Z       "id": "REQ-SHELL-2",
2026-06-21T23:05:53.0953334Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T23:05:53.0953429Z       "requiredStages": [
2026-06-21T23:05:53.0953509Z         "impl",
2026-06-21T23:05:53.0953591Z         "unit",
2026-06-21T23:05:53.0953677Z         "int"
2026-06-21T23:05:53.0953758Z       ],
2026-06-21T23:05:53.0953842Z       "stages": {
2026-06-21T23:05:53.0953929Z         "doc": {
2026-06-21T23:05:53.0954029Z           "complete": false,
2026-06-21T23:05:53.0954119Z           "evidence": []
2026-06-21T23:05:53.0954205Z         },
2026-06-21T23:05:53.0954283Z         "impl": {
2026-06-21T23:05:53.0954367Z           "complete": true,
2026-06-21T23:05:53.0954458Z           "evidence": [
2026-06-21T23:05:53.0954545Z             {
2026-06-21T23:05:53.0954663Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:53.0954749Z               "line": 217
2026-06-21T23:05:53.0954830Z             },
2026-06-21T23:05:53.0954917Z             {
2026-06-21T23:05:53.0955034Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:53.0955119Z               "line": 403
2026-06-21T23:05:53.0955201Z             },
2026-06-21T23:05:53.0955277Z             {
2026-06-21T23:05:53.0955384Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:05:53.0955469Z               "line": 250
2026-06-21T23:05:53.0955547Z             },
2026-06-21T23:05:53.0955751Z             {
2026-06-21T23:05:53.0955872Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:53.0956042Z               "line": 403
2026-06-21T23:05:53.0956123Z             },
2026-06-21T23:05:53.0956201Z             {
2026-06-21T23:05:53.0956310Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0956395Z               "line": 30
2026-06-21T23:05:53.0956481Z             },
2026-06-21T23:05:53.0956548Z             {
2026-06-21T23:05:53.0956667Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0956748Z               "line": 409
2026-06-21T23:05:53.0956831Z             },
2026-06-21T23:05:53.0956910Z             {
2026-06-21T23:05:53.0957015Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0957107Z               "line": 445
2026-06-21T23:05:53.0957188Z             },
2026-06-21T23:05:53.0957267Z             {
2026-06-21T23:05:53.0957377Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0957475Z               "line": 660
2026-06-21T23:05:53.0957554Z             },
2026-06-21T23:05:53.0957648Z             {
2026-06-21T23:05:53.0957777Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:53.0957862Z               "line": 348
2026-06-21T23:05:53.0957951Z             },
2026-06-21T23:05:53.0958032Z             {
2026-06-21T23:05:53.0958152Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:05:53.0958228Z               "line": 115
2026-06-21T23:05:53.0958318Z             },
2026-06-21T23:05:53.0958404Z             {
2026-06-21T23:05:53.0958514Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0958599Z               "line": 120
2026-06-21T23:05:53.0958680Z             },
2026-06-21T23:05:53.0958758Z             {
2026-06-21T23:05:53.0958867Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0959034Z               "line": 374
2026-06-21T23:05:53.0959153Z             },
2026-06-21T23:05:53.0959239Z             {
2026-06-21T23:05:53.0959363Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0959444Z               "line": 500
2026-06-21T23:05:53.0959525Z             },
2026-06-21T23:05:53.0959605Z             {
2026-06-21T23:05:53.0959721Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0959801Z               "line": 24
2026-06-21T23:05:53.0959883Z             },
2026-06-21T23:05:53.0959959Z             {
2026-06-21T23:05:53.0960069Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0960154Z               "line": 76
2026-06-21T23:05:53.0960226Z             },
2026-06-21T23:05:53.0960313Z             {
2026-06-21T23:05:53.0960426Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0960511Z               "line": 154
2026-06-21T23:05:53.0960587Z             },
2026-06-21T23:05:53.0960668Z             {
2026-06-21T23:05:53.0960783Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0960877Z               "line": 177
2026-06-21T23:05:53.0960954Z             },
2026-06-21T23:05:53.0961036Z             {
2026-06-21T23:05:53.0961140Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0961225Z               "line": 273
2026-06-21T23:05:53.0961298Z             },
2026-06-21T23:05:53.0961379Z             {
2026-06-21T23:05:53.0961493Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0961565Z               "line": 456
2026-06-21T23:05:53.0961651Z             },
2026-06-21T23:05:53.0961731Z             {
2026-06-21T23:05:53.0961845Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0961928Z               "line": 538
2026-06-21T23:05:53.0962014Z             },
2026-06-21T23:05:53.0962099Z             {
2026-06-21T23:05:53.0962208Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T23:05:53.0962290Z               "line": 27
2026-06-21T23:05:53.0962475Z             },
2026-06-21T23:05:53.0962557Z             {
2026-06-21T23:05:53.0962662Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T23:05:53.0962841Z               "line": 48
2026-06-21T23:05:53.0962927Z             },
2026-06-21T23:05:53.0963007Z             {
2026-06-21T23:05:53.0963116Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0963202Z               "line": 517
2026-06-21T23:05:53.0963288Z             },
2026-06-21T23:05:53.0963373Z             {
2026-06-21T23:05:53.0963478Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0963564Z               "line": 1921
2026-06-21T23:05:53.0963645Z             },
2026-06-21T23:05:53.0963725Z             {
2026-06-21T23:05:53.0963821Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0963903Z               "line": 6334
2026-06-21T23:05:53.0963974Z             },
2026-06-21T23:05:53.0964059Z             {
2026-06-21T23:05:53.0964151Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0964237Z               "line": 6395
2026-06-21T23:05:53.0964318Z             },
2026-06-21T23:05:53.0964407Z             {
2026-06-21T23:05:53.0964509Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0964594Z               "line": 6423
2026-06-21T23:05:53.0964680Z             },
2026-06-21T23:05:53.0964761Z             {
2026-06-21T23:05:53.0964857Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0964946Z               "line": 6477
2026-06-21T23:05:53.0965027Z             },
2026-06-21T23:05:53.0965105Z             {
2026-06-21T23:05:53.0965205Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0965289Z               "line": 6732
2026-06-21T23:05:53.0965371Z             },
2026-06-21T23:05:53.0965448Z             {
2026-06-21T23:05:53.0965543Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0965627Z               "line": 6792
2026-06-21T23:05:53.0965708Z             },
2026-06-21T23:05:53.0965789Z             {
2026-06-21T23:05:53.0965907Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:53.0966002Z               "line": 298
2026-06-21T23:05:53.0966088Z             },
2026-06-21T23:05:53.0966169Z             {
2026-06-21T23:05:53.0966264Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:53.0966345Z               "line": 339
2026-06-21T23:05:53.0966432Z             }
2026-06-21T23:05:53.0966512Z           ]
2026-06-21T23:05:53.0966597Z         },
2026-06-21T23:05:53.0966669Z         "int": {
2026-06-21T23:05:53.0966766Z           "complete": true,
2026-06-21T23:05:53.0966851Z           "evidence": [
2026-06-21T23:05:53.0966936Z             {
2026-06-21T23:05:53.0967056Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:53.0967151Z               "line": 706
2026-06-21T23:05:53.0967241Z             },
2026-06-21T23:05:53.0967317Z             {
2026-06-21T23:05:53.0967438Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0967527Z               "line": 778
2026-06-21T23:05:53.0967604Z             },
2026-06-21T23:05:53.0967686Z             {
2026-06-21T23:05:53.0967809Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0967895Z               "line": 1213
2026-06-21T23:05:53.0967967Z             },
2026-06-21T23:05:53.0968054Z             {
2026-06-21T23:05:53.0968180Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T23:05:53.0968275Z               "line": 18
2026-06-21T23:05:53.0968356Z             }
2026-06-21T23:05:53.0968427Z           ]
2026-06-21T23:05:53.0968507Z         },
2026-06-21T23:05:53.0968587Z         "unit": {
2026-06-21T23:05:53.0968683Z           "complete": true,
2026-06-21T23:05:53.0968760Z           "evidence": [
2026-06-21T23:05:53.0968840Z             {
2026-06-21T23:05:53.0969036Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0969164Z               "line": 744
2026-06-21T23:05:53.0969250Z             },
2026-06-21T23:05:53.0969436Z             {
2026-06-21T23:05:53.0969550Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:05:53.0969718Z               "line": 796
2026-06-21T23:05:53.0969803Z             },
2026-06-21T23:05:53.0969889Z             {
2026-06-21T23:05:53.0970004Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0970080Z               "line": 705
2026-06-21T23:05:53.0970156Z             },
2026-06-21T23:05:53.0970238Z             {
2026-06-21T23:05:53.0970347Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0970428Z               "line": 754
2026-06-21T23:05:53.0970509Z             },
2026-06-21T23:05:53.0970592Z             {
2026-06-21T23:05:53.0970699Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0970776Z               "line": 778
2026-06-21T23:05:53.0970854Z             },
2026-06-21T23:05:53.0970930Z             {
2026-06-21T23:05:53.0971047Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0971132Z               "line": 603
2026-06-21T23:05:53.0971214Z             },
2026-06-21T23:05:53.0971301Z             {
2026-06-21T23:05:53.0971414Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0971500Z               "line": 624
2026-06-21T23:05:53.0971577Z             },
2026-06-21T23:05:53.0971658Z             {
2026-06-21T23:05:53.0971776Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0971859Z               "line": 660
2026-06-21T23:05:53.0971939Z             },
2026-06-21T23:05:53.0972020Z             {
2026-06-21T23:05:53.0972134Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0972225Z               "line": 714
2026-06-21T23:05:53.0972301Z             },
2026-06-21T23:05:53.0972387Z             {
2026-06-21T23:05:53.0972493Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0972583Z               "line": 732
2026-06-21T23:05:53.0972669Z             },
2026-06-21T23:05:53.0972744Z             {
2026-06-21T23:05:53.0972855Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0972940Z               "line": 766
2026-06-21T23:05:53.0973026Z             },
2026-06-21T23:05:53.0973102Z             {
2026-06-21T23:05:53.0973222Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:05:53.0973302Z               "line": 841
2026-06-21T23:05:53.0973387Z             },
2026-06-21T23:05:53.0973473Z             {
2026-06-21T23:05:53.0973581Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T23:05:53.0973661Z               "line": 85
2026-06-21T23:05:53.0973737Z             },
2026-06-21T23:05:53.0973819Z             {
2026-06-21T23:05:53.0973919Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0973999Z               "line": 8044
2026-06-21T23:05:53.0974081Z             },
2026-06-21T23:05:53.0974163Z             {
2026-06-21T23:05:53.0974263Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0974352Z               "line": 9054
2026-06-21T23:05:53.0974430Z             },
2026-06-21T23:05:53.0974506Z             {
2026-06-21T23:05:53.0974615Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0974706Z               "line": 9124
2026-06-21T23:05:53.0974783Z             },
2026-06-21T23:05:53.0974863Z             {
2026-06-21T23:05:53.0974962Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0975050Z               "line": 9162
2026-06-21T23:05:53.0975131Z             }
2026-06-21T23:05:53.0975216Z           ]
2026-06-21T23:05:53.0975292Z         }
2026-06-21T23:05:53.0975374Z       }
2026-06-21T23:05:53.0975450Z     },
2026-06-21T23:05:53.0975530Z     {
2026-06-21T23:05:53.0975626Z       "id": "REQ-SHELL-3",
2026-06-21T23:05:53.0977392Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T23:05:53.0977664Z       "requiredStages": [
2026-06-21T23:05:53.0977749Z         "impl",
2026-06-21T23:05:53.0977825Z         "unit",
2026-06-21T23:05:53.0977912Z         "int"
2026-06-21T23:05:53.0978003Z       ],
2026-06-21T23:05:53.0978082Z       "stages": {
2026-06-21T23:05:53.0978164Z         "doc": {
2026-06-21T23:05:53.0978251Z           "complete": false,
2026-06-21T23:05:53.0978332Z           "evidence": []
2026-06-21T23:05:53.0978411Z         },
2026-06-21T23:05:53.0978498Z         "impl": {
2026-06-21T23:05:53.0978590Z           "complete": true,
2026-06-21T23:05:53.0978670Z           "evidence": [
2026-06-21T23:05:53.0978750Z             {
2026-06-21T23:05:53.0978859Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:53.0979038Z               "line": 229
2026-06-21T23:05:53.0979156Z             },
2026-06-21T23:05:53.0979239Z             {
2026-06-21T23:05:53.0979353Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:05:53.0979434Z               "line": 36
2026-06-21T23:05:53.0979520Z             },
2026-06-21T23:05:53.0979596Z             {
2026-06-21T23:05:53.0979719Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:05:53.0979796Z               "line": 137
2026-06-21T23:05:53.0979878Z             },
2026-06-21T23:05:53.0979963Z             {
2026-06-21T23:05:53.0980072Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:05:53.0980154Z               "line": 153
2026-06-21T23:05:53.0980235Z             },
2026-06-21T23:05:53.0980316Z             {
2026-06-21T23:05:53.0980425Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:05:53.0980508Z               "line": 165
2026-06-21T23:05:53.0980597Z             },
2026-06-21T23:05:53.0980683Z             {
2026-06-21T23:05:53.0980813Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:05:53.0980902Z               "line": 242
2026-06-21T23:05:53.0980983Z             },
2026-06-21T23:05:53.0981060Z             {
2026-06-21T23:05:53.0981176Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:05:53.0981264Z               "line": 267
2026-06-21T23:05:53.0981336Z             },
2026-06-21T23:05:53.0981419Z             {
2026-06-21T23:05:53.0981523Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:05:53.0981607Z               "line": 293
2026-06-21T23:05:53.0981687Z             },
2026-06-21T23:05:53.0981764Z             {
2026-06-21T23:05:53.0981875Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T23:05:53.0981955Z               "line": 51
2026-06-21T23:05:53.0982046Z             },
2026-06-21T23:05:53.0982123Z             {
2026-06-21T23:05:53.0982242Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0982322Z               "line": 333
2026-06-21T23:05:53.0982404Z             },
2026-06-21T23:05:53.0982485Z             {
2026-06-21T23:05:53.0982594Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0982690Z               "line": 373
2026-06-21T23:05:53.0982767Z             },
2026-06-21T23:05:53.0982866Z             {
2026-06-21T23:05:53.0982970Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0983053Z               "line": 602
2026-06-21T23:05:53.0983138Z             },
2026-06-21T23:05:53.0983204Z             {
2026-06-21T23:05:53.0983319Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:05:53.0983397Z               "line": 132
2026-06-21T23:05:53.0983481Z             },
2026-06-21T23:05:53.0983562Z             {
2026-06-21T23:05:53.0983787Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.0983871Z               "line": 448
2026-06-21T23:05:53.0984029Z             },
2026-06-21T23:05:53.0984113Z             {
2026-06-21T23:05:53.0984221Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:05:53.0984317Z               "line": 74
2026-06-21T23:05:53.0984399Z             },
2026-06-21T23:05:53.0984479Z             {
2026-06-21T23:05:53.0984598Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.0984675Z               "line": 605
2026-06-21T23:05:53.0984761Z             },
2026-06-21T23:05:53.0984841Z             {
2026-06-21T23:05:53.0984951Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.0985038Z               "line": 396
2026-06-21T23:05:53.0985123Z             },
2026-06-21T23:05:53.0985203Z             {
2026-06-21T23:05:53.0985305Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0985404Z               "line": 6518
2026-06-21T23:05:53.0985485Z             }
2026-06-21T23:05:53.0985566Z           ]
2026-06-21T23:05:53.0985653Z         },
2026-06-21T23:05:53.0985733Z         "int": {
2026-06-21T23:05:53.0985828Z           "complete": true,
2026-06-21T23:05:53.0989338Z           "evidence": [
2026-06-21T23:05:53.0989448Z             {
2026-06-21T23:05:53.0989580Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.0989669Z               "line": 1262
2026-06-21T23:05:53.0989756Z             },
2026-06-21T23:05:53.0989837Z             {
2026-06-21T23:05:53.0989956Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T23:05:53.0990036Z               "line": 17
2026-06-21T23:05:53.0990119Z             }
2026-06-21T23:05:53.0990194Z           ]
2026-06-21T23:05:53.0990275Z         },
2026-06-21T23:05:53.0990356Z         "unit": {
2026-06-21T23:05:53.0990448Z           "complete": true,
2026-06-21T23:05:53.0990528Z           "evidence": [
2026-06-21T23:05:53.0990623Z             {
2026-06-21T23:05:53.0990748Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:05:53.0990842Z               "line": 311
2026-06-21T23:05:53.0990923Z             },
2026-06-21T23:05:53.0990995Z             {
2026-06-21T23:05:53.0991115Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:05:53.0991196Z               "line": 325
2026-06-21T23:05:53.0991276Z             },
2026-06-21T23:05:53.0991359Z             {
2026-06-21T23:05:53.0991467Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:05:53.0991548Z               "line": 343
2026-06-21T23:05:53.0991634Z             },
2026-06-21T23:05:53.0991712Z             {
2026-06-21T23:05:53.0991819Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:05:53.0991906Z               "line": 364
2026-06-21T23:05:53.0991984Z             },
2026-06-21T23:05:53.0992046Z             {
2026-06-21T23:05:53.0992158Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:05:53.0992257Z               "line": 376
2026-06-21T23:05:53.0992334Z             },
2026-06-21T23:05:53.0992421Z             {
2026-06-21T23:05:53.0992520Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0992601Z               "line": 897
2026-06-21T23:05:53.0992693Z             },
2026-06-21T23:05:53.0992769Z             {
2026-06-21T23:05:53.0992887Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0992964Z               "line": 957
2026-06-21T23:05:53.0993050Z             },
2026-06-21T23:05:53.0993131Z             {
2026-06-21T23:05:53.0993250Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:05:53.0993332Z               "line": 338
2026-06-21T23:05:53.0993412Z             },
2026-06-21T23:05:53.0993497Z             {
2026-06-21T23:05:53.0993603Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:53.0993689Z               "line": 769
2026-06-21T23:05:53.0993769Z             },
2026-06-21T23:05:53.0993994Z             {
2026-06-21T23:05:53.0994098Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.0994277Z               "line": 8836
2026-06-21T23:05:53.0994360Z             }
2026-06-21T23:05:53.0994441Z           ]
2026-06-21T23:05:53.0994526Z         }
2026-06-21T23:05:53.0994598Z       }
2026-06-21T23:05:53.0994678Z     },
2026-06-21T23:05:53.0994758Z     {
2026-06-21T23:05:53.0994848Z       "id": "REQ-SHELL-4",
2026-06-21T23:05:53.0996636Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T23:05:53.0996756Z       "requiredStages": [
2026-06-21T23:05:53.0996852Z         "doc",
2026-06-21T23:05:53.0996941Z         "impl",
2026-06-21T23:05:53.0997018Z         "unit",
2026-06-21T23:05:53.0997100Z         "int"
2026-06-21T23:05:53.0997181Z       ],
2026-06-21T23:05:53.0997266Z       "stages": {
2026-06-21T23:05:53.0997346Z         "doc": {
2026-06-21T23:05:53.0997427Z           "complete": true,
2026-06-21T23:05:53.0997508Z           "evidence": [
2026-06-21T23:05:53.0997583Z             {
2026-06-21T23:05:53.0997682Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.0997763Z               "line": 281
2026-06-21T23:05:53.0997850Z             },
2026-06-21T23:05:53.0997930Z             {
2026-06-21T23:05:53.0998141Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T23:05:53.0998227Z               "line": 88
2026-06-21T23:05:53.0998302Z             }
2026-06-21T23:05:53.0998378Z           ]
2026-06-21T23:05:53.0998460Z         },
2026-06-21T23:05:53.0998546Z         "impl": {
2026-06-21T23:05:53.0998630Z           "complete": true,
2026-06-21T23:05:53.0998712Z           "evidence": [
2026-06-21T23:05:53.0998794Z             {
2026-06-21T23:05:53.0998908Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:53.0999113Z               "line": 243
2026-06-21T23:05:53.0999198Z             },
2026-06-21T23:05:53.0999279Z             {
2026-06-21T23:05:53.0999419Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T23:05:53.0999504Z               "line": 61
2026-06-21T23:05:53.0999585Z             },
2026-06-21T23:05:53.0999667Z             {
2026-06-21T23:05:53.0999772Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.0999856Z               "line": 218
2026-06-21T23:05:53.0999941Z             },
2026-06-21T23:05:53.1000018Z             {
2026-06-21T23:05:53.1000122Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.1000225Z               "line": 245
2026-06-21T23:05:53.1000301Z             },
2026-06-21T23:05:53.1000388Z             {
2026-06-21T23:05:53.1000497Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.1000573Z               "line": 616
2026-06-21T23:05:53.1000659Z             },
2026-06-21T23:05:53.1000736Z             {
2026-06-21T23:05:53.1000844Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.1000926Z               "line": 1191
2026-06-21T23:05:53.1001013Z             },
2026-06-21T23:05:53.1001088Z             {
2026-06-21T23:05:53.1001202Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.1001294Z               "line": 1203
2026-06-21T23:05:53.1001365Z             },
2026-06-21T23:05:53.1001446Z             {
2026-06-21T23:05:53.1001551Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.1001633Z               "line": 1244
2026-06-21T23:05:53.1001832Z             },
2026-06-21T23:05:53.1001919Z             {
2026-06-21T23:05:53.1002037Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.1002329Z               "line": 456
2026-06-21T23:05:53.1002408Z             },
2026-06-21T23:05:53.1002480Z             {
2026-06-21T23:05:53.1002596Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1002686Z               "line": 44
2026-06-21T23:05:53.1002766Z             },
2026-06-21T23:05:53.1002841Z             {
2026-06-21T23:05:53.1002957Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1003038Z               "line": 208
2026-06-21T23:05:53.1003118Z             },
2026-06-21T23:05:53.1003200Z             {
2026-06-21T23:05:53.1003305Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1003385Z               "line": 227
2026-06-21T23:05:53.1003471Z             },
2026-06-21T23:05:53.1003549Z             {
2026-06-21T23:05:53.1003653Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1003738Z               "line": 253
2026-06-21T23:05:53.1003834Z             },
2026-06-21T23:05:53.1003915Z             {
2026-06-21T23:05:53.1004024Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1004101Z               "line": 272
2026-06-21T23:05:53.1004183Z             },
2026-06-21T23:05:53.1004258Z             {
2026-06-21T23:05:53.1004372Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1004454Z               "line": 392
2026-06-21T23:05:53.1004541Z             },
2026-06-21T23:05:53.1004611Z             {
2026-06-21T23:05:53.1004716Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1004798Z               "line": 421
2026-06-21T23:05:53.1004883Z             },
2026-06-21T23:05:53.1004958Z             {
2026-06-21T23:05:53.1005067Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1005154Z               "line": 439
2026-06-21T23:05:53.1005233Z             },
2026-06-21T23:05:53.1005313Z             {
2026-06-21T23:05:53.1005423Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1005509Z               "line": 458
2026-06-21T23:05:53.1005590Z             },
2026-06-21T23:05:53.1005680Z             {
2026-06-21T23:05:53.1005790Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1005867Z               "line": 486
2026-06-21T23:05:53.1005947Z             },
2026-06-21T23:05:53.1006014Z             {
2026-06-21T23:05:53.1006125Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.1006210Z               "line": 624
2026-06-21T23:05:53.1006295Z             },
2026-06-21T23:05:53.1006367Z             {
2026-06-21T23:05:53.1006477Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.1006558Z               "line": 829
2026-06-21T23:05:53.1006634Z             },
2026-06-21T23:05:53.1006715Z             {
2026-06-21T23:05:53.1006849Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.1006925Z               "line": 435
2026-06-21T23:05:53.1007021Z             },
2026-06-21T23:05:53.1007097Z             {
2026-06-21T23:05:53.1007201Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1007287Z               "line": 6574
2026-06-21T23:05:53.1007370Z             }
2026-06-21T23:05:53.1007455Z           ]
2026-06-21T23:05:53.1007535Z         },
2026-06-21T23:05:53.1007621Z         "int": {
2026-06-21T23:05:53.1007713Z           "complete": true,
2026-06-21T23:05:53.1007798Z           "evidence": [
2026-06-21T23:05:53.1007878Z             {
2026-06-21T23:05:53.1007996Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T23:05:53.1008082Z               "line": 18
2026-06-21T23:05:53.1008152Z             }
2026-06-21T23:05:53.1008237Z           ]
2026-06-21T23:05:53.1008304Z         },
2026-06-21T23:05:53.1008381Z         "unit": {
2026-06-21T23:05:53.1008472Z           "complete": true,
2026-06-21T23:05:53.1008648Z           "evidence": [
2026-06-21T23:05:53.1008730Z             {
2026-06-21T23:05:53.1008919Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.1009125Z               "line": 1479
2026-06-21T23:05:53.1009214Z             },
2026-06-21T23:05:53.1009297Z             {
2026-06-21T23:05:53.1009406Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.1009487Z               "line": 1508
2026-06-21T23:05:53.1009563Z             },
2026-06-21T23:05:53.1009650Z             {
2026-06-21T23:05:53.1009768Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1009854Z               "line": 504
2026-06-21T23:05:53.1009937Z             },
2026-06-21T23:05:53.1010003Z             {
2026-06-21T23:05:53.1010116Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1010203Z               "line": 514
2026-06-21T23:05:53.1010279Z             },
2026-06-21T23:05:53.1010360Z             {
2026-06-21T23:05:53.1010463Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1010559Z               "line": 531
2026-06-21T23:05:53.1010630Z             },
2026-06-21T23:05:53.1010714Z             {
2026-06-21T23:05:53.1010818Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1010905Z               "line": 543
2026-06-21T23:05:53.1010986Z             },
2026-06-21T23:05:53.1011062Z             {
2026-06-21T23:05:53.1011181Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:05:53.1011253Z               "line": 555
2026-06-21T23:05:53.1011334Z             },
2026-06-21T23:05:53.1011419Z             {
2026-06-21T23:05:53.1011530Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.1011611Z               "line": 1145
2026-06-21T23:05:53.1011692Z             },
2026-06-21T23:05:53.1011776Z             {
2026-06-21T23:05:53.1011883Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:53.1011968Z               "line": 776
2026-06-21T23:05:53.1012053Z             }
2026-06-21T23:05:53.1012125Z           ]
2026-06-21T23:05:53.1012217Z         }
2026-06-21T23:05:53.1012287Z       }
2026-06-21T23:05:53.1012373Z     },
2026-06-21T23:05:53.1012445Z     {
2026-06-21T23:05:53.1012531Z       "id": "REQ-SHELL-5",
2026-06-21T23:05:53.1013721Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T23:05:53.1013803Z       "requiredStages": [
2026-06-21T23:05:53.1013894Z         "doc",
2026-06-21T23:05:53.1013978Z         "impl",
2026-06-21T23:05:53.1014055Z         "unit",
2026-06-21T23:05:53.1014142Z         "int"
2026-06-21T23:05:53.1014233Z       ],
2026-06-21T23:05:53.1014312Z       "stages": {
2026-06-21T23:05:53.1014384Z         "doc": {
2026-06-21T23:05:53.1014476Z           "complete": true,
2026-06-21T23:05:53.1014561Z           "evidence": [
2026-06-21T23:05:53.1014641Z             {
2026-06-21T23:05:53.1014738Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.1014819Z               "line": 284
2026-06-21T23:05:53.1014900Z             }
2026-06-21T23:05:53.1014975Z           ]
2026-06-21T23:05:53.1015048Z         },
2026-06-21T23:05:53.1015124Z         "impl": {
2026-06-21T23:05:53.1015204Z           "complete": true,
2026-06-21T23:05:53.1015290Z           "evidence": [
2026-06-21T23:05:53.1015367Z             {
2026-06-21T23:05:53.1015472Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:05:53.1015556Z               "line": 260
2026-06-21T23:05:53.1015632Z             }
2026-06-21T23:05:53.1015704Z           ]
2026-06-21T23:05:53.1015794Z         },
2026-06-21T23:05:53.1015873Z         "int": {
2026-06-21T23:05:53.1016074Z           "complete": true,
2026-06-21T23:05:53.1016159Z           "evidence": [
2026-06-21T23:05:53.1016322Z             {
2026-06-21T23:05:53.1016441Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.1016526Z               "line": 827
2026-06-21T23:05:53.1016607Z             },
2026-06-21T23:05:53.1016690Z             {
2026-06-21T23:05:53.1016799Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.1016884Z               "line": 1290
2026-06-21T23:05:53.1016961Z             },
2026-06-21T23:05:53.1017042Z             {
2026-06-21T23:05:53.1017175Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T23:05:53.1017261Z               "line": 23
2026-06-21T23:05:53.1017343Z             }
2026-06-21T23:05:53.1017423Z           ]
2026-06-21T23:05:53.1017504Z         },
2026-06-21T23:05:53.1017586Z         "unit": {
2026-06-21T23:05:53.1017663Z           "complete": true,
2026-06-21T23:05:53.1017752Z           "evidence": [
2026-06-21T23:05:53.1017823Z             {
2026-06-21T23:05:53.1017939Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:05:53.1018033Z               "line": 803
2026-06-21T23:05:53.1018114Z             }
2026-06-21T23:05:53.1018191Z           ]
2026-06-21T23:05:53.1018273Z         }
2026-06-21T23:05:53.1018353Z       }
2026-06-21T23:05:53.1018438Z     },
2026-06-21T23:05:53.1018523Z     {
2026-06-21T23:05:53.1018605Z       "id": "REQ-START-1",
2026-06-21T23:05:53.1018783Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T23:05:53.1018869Z       "requiredStages": [
2026-06-21T23:05:53.1019027Z         "impl",
2026-06-21T23:05:53.1019160Z         "unit"
2026-06-21T23:05:53.1019251Z       ],
2026-06-21T23:05:53.1019347Z       "stages": {
2026-06-21T23:05:53.1019427Z         "doc": {
2026-06-21T23:05:53.1019518Z           "complete": false,
2026-06-21T23:05:53.1019604Z           "evidence": []
2026-06-21T23:05:53.1019694Z         },
2026-06-21T23:05:53.1019770Z         "impl": {
2026-06-21T23:05:53.1019847Z           "complete": true,
2026-06-21T23:05:53.1019938Z           "evidence": [
2026-06-21T23:05:53.1020009Z             {
2026-06-21T23:05:53.1020114Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T23:05:53.1020196Z               "line": 16
2026-06-21T23:05:53.1020276Z             }
2026-06-21T23:05:53.1020357Z           ]
2026-06-21T23:05:53.1020448Z         },
2026-06-21T23:05:53.1020530Z         "int": {
2026-06-21T23:05:53.1020614Z           "complete": false,
2026-06-21T23:05:53.1020705Z           "evidence": []
2026-06-21T23:05:53.1020782Z         },
2026-06-21T23:05:53.1020863Z         "unit": {
2026-06-21T23:05:53.1020948Z           "complete": true,
2026-06-21T23:05:53.1021033Z           "evidence": [
2026-06-21T23:05:53.1021119Z             {
2026-06-21T23:05:53.1021223Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T23:05:53.1021312Z               "line": 48
2026-06-21T23:05:53.1021393Z             },
2026-06-21T23:05:53.1021474Z             {
2026-06-21T23:05:53.1021575Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T23:05:53.1021664Z               "line": 63
2026-06-21T23:05:53.1021745Z             }
2026-06-21T23:05:53.1021818Z           ]
2026-06-21T23:05:53.1021904Z         }
2026-06-21T23:05:53.1021979Z       }
2026-06-21T23:05:53.1022060Z     },
2026-06-21T23:05:53.1022142Z     {
2026-06-21T23:05:53.1022233Z       "id": "REQ-START-2",
2026-06-21T23:05:53.1022375Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T23:05:53.1022462Z       "requiredStages": [
2026-06-21T23:05:53.1022556Z         "impl",
2026-06-21T23:05:53.1022628Z         "unit",
2026-06-21T23:05:53.1022714Z         "int"
2026-06-21T23:05:53.1022791Z       ],
2026-06-21T23:05:53.1022876Z       "stages": {
2026-06-21T23:05:53.1022961Z         "doc": {
2026-06-21T23:05:53.1023049Z           "complete": false,
2026-06-21T23:05:53.1023129Z           "evidence": []
2026-06-21T23:05:53.1023310Z         },
2026-06-21T23:05:53.1023387Z         "impl": {
2026-06-21T23:05:53.1023472Z           "complete": true,
2026-06-21T23:05:53.1023640Z           "evidence": [
2026-06-21T23:05:53.1023731Z             {
2026-06-21T23:05:53.1023843Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1023928Z               "line": 16
2026-06-21T23:05:53.1023995Z             },
2026-06-21T23:05:53.1024087Z             {
2026-06-21T23:05:53.1024196Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1024281Z               "line": 115
2026-06-21T23:05:53.1024363Z             },
2026-06-21T23:05:53.1024444Z             {
2026-06-21T23:05:53.1024553Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1024635Z               "line": 300
2026-06-21T23:05:53.1024712Z             }
2026-06-21T23:05:53.1024788Z           ]
2026-06-21T23:05:53.1024872Z         },
2026-06-21T23:05:53.1024959Z         "int": {
2026-06-21T23:05:53.1025050Z           "complete": true,
2026-06-21T23:05:53.1025131Z           "evidence": [
2026-06-21T23:05:53.1025211Z             {
2026-06-21T23:05:53.1025332Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:05:53.1025421Z               "line": 186
2026-06-21T23:05:53.1025497Z             }
2026-06-21T23:05:53.1025574Z           ]
2026-06-21T23:05:53.1025651Z         },
2026-06-21T23:05:53.1025731Z         "unit": {
2026-06-21T23:05:53.1025812Z           "complete": true,
2026-06-21T23:05:53.1025903Z           "evidence": [
2026-06-21T23:05:53.1025985Z             {
2026-06-21T23:05:53.1026093Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1026173Z               "line": 590
2026-06-21T23:05:53.1026254Z             },
2026-06-21T23:05:53.1026340Z             {
2026-06-21T23:05:53.1026443Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1026533Z               "line": 623
2026-06-21T23:05:53.1026620Z             }
2026-06-21T23:05:53.1026706Z           ]
2026-06-21T23:05:53.1026786Z         }
2026-06-21T23:05:53.1026867Z       }
2026-06-21T23:05:53.1026963Z     },
2026-06-21T23:05:53.1027044Z     {
2026-06-21T23:05:53.1027134Z       "id": "REQ-START-3",
2026-06-21T23:05:53.1027301Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T23:05:53.1027392Z       "requiredStages": [
2026-06-21T23:05:53.1027473Z         "impl",
2026-06-21T23:05:53.1027545Z         "unit",
2026-06-21T23:05:53.1027626Z         "int"
2026-06-21T23:05:53.1027707Z       ],
2026-06-21T23:05:53.1027788Z       "stages": {
2026-06-21T23:05:53.1027870Z         "doc": {
2026-06-21T23:05:53.1027959Z           "complete": false,
2026-06-21T23:05:53.1028040Z           "evidence": []
2026-06-21T23:05:53.1028116Z         },
2026-06-21T23:05:53.1028204Z         "impl": {
2026-06-21T23:05:53.1028279Z           "complete": true,
2026-06-21T23:05:53.1028374Z           "evidence": [
2026-06-21T23:05:53.1028451Z             {
2026-06-21T23:05:53.1028570Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:05:53.1028660Z               "line": 23
2026-06-21T23:05:53.1028751Z             },
2026-06-21T23:05:53.1028838Z             {
2026-06-21T23:05:53.1028998Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:05:53.1029088Z               "line": 205
2026-06-21T23:05:53.1029179Z             },
2026-06-21T23:05:53.1029258Z             {
2026-06-21T23:05:53.1029376Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:05:53.1029453Z               "line": 221
2026-06-21T23:05:53.1029545Z             },
2026-06-21T23:05:53.1029620Z             {
2026-06-21T23:05:53.1029729Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1029812Z               "line": 17
2026-06-21T23:05:53.1029893Z             },
2026-06-21T23:05:53.1029973Z             {
2026-06-21T23:05:53.1030078Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1030169Z               "line": 35
2026-06-21T23:05:53.1030349Z             },
2026-06-21T23:05:53.1030437Z             {
2026-06-21T23:05:53.1030555Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1030732Z               "line": 116
2026-06-21T23:05:53.1030813Z             }
2026-06-21T23:05:53.1030893Z           ]
2026-06-21T23:05:53.1030970Z         },
2026-06-21T23:05:53.1031047Z         "int": {
2026-06-21T23:05:53.1031137Z           "complete": true,
2026-06-21T23:05:53.1031222Z           "evidence": [
2026-06-21T23:05:53.1031298Z             {
2026-06-21T23:05:53.1031405Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:05:53.1031489Z               "line": 488
2026-06-21T23:05:53.1031569Z             }
2026-06-21T23:05:53.1031650Z           ]
2026-06-21T23:05:53.1031736Z         },
2026-06-21T23:05:53.1031820Z         "unit": {
2026-06-21T23:05:53.1031905Z           "complete": true,
2026-06-21T23:05:53.1031982Z           "evidence": [
2026-06-21T23:05:53.1032058Z             {
2026-06-21T23:05:53.1032177Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:05:53.1032253Z               "line": 381
2026-06-21T23:05:53.1032335Z             },
2026-06-21T23:05:53.1032421Z             {
2026-06-21T23:05:53.1032530Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:05:53.1032616Z               "line": 402
2026-06-21T23:05:53.1032698Z             },
2026-06-21T23:05:53.1032778Z             {
2026-06-21T23:05:53.1032887Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:05:53.1032970Z               "line": 412
2026-06-21T23:05:53.1033050Z             },
2026-06-21T23:05:53.1033121Z             {
2026-06-21T23:05:53.1033226Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1033309Z               "line": 591
2026-06-21T23:05:53.1033389Z             },
2026-06-21T23:05:53.1033465Z             {
2026-06-21T23:05:53.1033575Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1033656Z               "line": 624
2026-06-21T23:05:53.1033741Z             },
2026-06-21T23:05:53.1033827Z             {
2026-06-21T23:05:53.1033938Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1034028Z               "line": 657
2026-06-21T23:05:53.1034108Z             }
2026-06-21T23:05:53.1034195Z           ]
2026-06-21T23:05:53.1034277Z         }
2026-06-21T23:05:53.1034357Z       }
2026-06-21T23:05:53.1034441Z     },
2026-06-21T23:05:53.1034522Z     {
2026-06-21T23:05:53.1034608Z       "id": "REQ-START-4",
2026-06-21T23:05:53.1034742Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T23:05:53.1034837Z       "requiredStages": [
2026-06-21T23:05:53.1034914Z         "impl",
2026-06-21T23:05:53.1034995Z         "unit"
2026-06-21T23:05:53.1035071Z       ],
2026-06-21T23:05:53.1035146Z       "stages": {
2026-06-21T23:05:53.1035233Z         "doc": {
2026-06-21T23:05:53.1035319Z           "complete": false,
2026-06-21T23:05:53.1035414Z           "evidence": []
2026-06-21T23:05:53.1035519Z         },
2026-06-21T23:05:53.1035600Z         "impl": {
2026-06-21T23:05:53.1035686Z           "complete": true,
2026-06-21T23:05:53.1035771Z           "evidence": [
2026-06-21T23:05:53.1035858Z             {
2026-06-21T23:05:53.1035963Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.1036044Z               "line": 585
2026-06-21T23:05:53.1036129Z             }
2026-06-21T23:05:53.1036206Z           ]
2026-06-21T23:05:53.1036287Z         },
2026-06-21T23:05:53.1036368Z         "int": {
2026-06-21T23:05:53.1036468Z           "complete": false,
2026-06-21T23:05:53.1036550Z           "evidence": []
2026-06-21T23:05:53.1036639Z         },
2026-06-21T23:05:53.1036729Z         "unit": {
2026-06-21T23:05:53.1036815Z           "complete": true,
2026-06-21T23:05:53.1036905Z           "evidence": [
2026-06-21T23:05:53.1036975Z             {
2026-06-21T23:05:53.1037093Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.1037170Z               "line": 1026
2026-06-21T23:05:53.1037370Z             }
2026-06-21T23:05:53.1037456Z           ]
2026-06-21T23:05:53.1037533Z         }
2026-06-21T23:05:53.1037694Z       }
2026-06-21T23:05:53.1037767Z     },
2026-06-21T23:05:53.1037843Z     {
2026-06-21T23:05:53.1037929Z       "id": "REQ-START-5",
2026-06-21T23:05:53.1040833Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T23:05:53.1040972Z       "requiredStages": [
2026-06-21T23:05:53.1041062Z         "doc",
2026-06-21T23:05:53.1041143Z         "impl",
2026-06-21T23:05:53.1041229Z         "unit",
2026-06-21T23:05:53.1041307Z         "int"
2026-06-21T23:05:53.1041387Z       ],
2026-06-21T23:05:53.1041468Z       "stages": {
2026-06-21T23:05:53.1041544Z         "doc": {
2026-06-21T23:05:53.1041636Z           "complete": true,
2026-06-21T23:05:53.1041720Z           "evidence": [
2026-06-21T23:05:53.1041801Z             {
2026-06-21T23:05:53.1041883Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.1041975Z               "line": 176
2026-06-21T23:05:53.1042049Z             },
2026-06-21T23:05:53.1042135Z             {
2026-06-21T23:05:53.1042258Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T23:05:53.1042357Z               "line": 28
2026-06-21T23:05:53.1042447Z             }
2026-06-21T23:05:53.1042527Z           ]
2026-06-21T23:05:53.1042609Z         },
2026-06-21T23:05:53.1042691Z         "impl": {
2026-06-21T23:05:53.1042775Z           "complete": true,
2026-06-21T23:05:53.1042862Z           "evidence": [
2026-06-21T23:05:53.1042938Z             {
2026-06-21T23:05:53.1043057Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.1043142Z               "line": 26
2026-06-21T23:05:53.1043220Z             },
2026-06-21T23:05:53.1043315Z             {
2026-06-21T23:05:53.1043491Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.1043643Z               "line": 212
2026-06-21T23:05:53.1043729Z             },
2026-06-21T23:05:53.1043805Z             {
2026-06-21T23:05:53.1043916Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.1044006Z               "line": 221
2026-06-21T23:05:53.1044106Z             },
2026-06-21T23:05:53.1044184Z             {
2026-06-21T23:05:53.1044297Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:53.1044378Z               "line": 485
2026-06-21T23:05:53.1044455Z             },
2026-06-21T23:05:53.1044536Z             {
2026-06-21T23:05:53.1044644Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1044726Z               "line": 36
2026-06-21T23:05:53.1044808Z             },
2026-06-21T23:05:53.1044893Z             {
2026-06-21T23:05:53.1045002Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1045082Z               "line": 118
2026-06-21T23:05:53.1045164Z             },
2026-06-21T23:05:53.1045250Z             {
2026-06-21T23:05:53.1045349Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:05:53.1045435Z               "line": 329
2026-06-21T23:05:53.1045517Z             }
2026-06-21T23:05:53.1045598Z           ]
2026-06-21T23:05:53.1045837Z         },
2026-06-21T23:05:53.1045918Z         "int": {
2026-06-21T23:05:53.1046011Z           "complete": true,
2026-06-21T23:05:53.1046194Z           "evidence": [
2026-06-21T23:05:53.1046279Z             {
2026-06-21T23:05:53.1046409Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T23:05:53.1046490Z               "line": 17
2026-06-21T23:05:53.1046580Z             }
2026-06-21T23:05:53.1046660Z           ]
2026-06-21T23:05:53.1046743Z         },
2026-06-21T23:05:53.1046824Z         "unit": {
2026-06-21T23:05:53.1046913Z           "complete": true,
2026-06-21T23:05:53.1047000Z           "evidence": [
2026-06-21T23:05:53.1047067Z             {
2026-06-21T23:05:53.1047190Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.1047270Z               "line": 358
2026-06-21T23:05:53.1047351Z             },
2026-06-21T23:05:53.1047427Z             {
2026-06-21T23:05:53.1047544Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:05:53.1047653Z               "line": 371
2026-06-21T23:05:53.1047725Z             },
2026-06-21T23:05:53.1047808Z             {
2026-06-21T23:05:53.1047920Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:05:53.1048012Z               "line": 597
2026-06-21T23:05:53.1048103Z             }
2026-06-21T23:05:53.1048184Z           ]
2026-06-21T23:05:53.1048264Z         }
2026-06-21T23:05:53.1048332Z       }
2026-06-21T23:05:53.1048422Z     },
2026-06-21T23:05:53.1048498Z     {
2026-06-21T23:05:53.1048593Z       "id": "REQ-STORE-1",
2026-06-21T23:05:53.1049591Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T23:05:53.1049686Z       "requiredStages": [
2026-06-21T23:05:53.1049775Z         "impl",
2026-06-21T23:05:53.1049852Z         "unit"
2026-06-21T23:05:53.1049934Z       ],
2026-06-21T23:05:53.1050015Z       "stages": {
2026-06-21T23:05:53.1050104Z         "doc": {
2026-06-21T23:05:53.1050194Z           "complete": false,
2026-06-21T23:05:53.1050275Z           "evidence": []
2026-06-21T23:05:53.1050351Z         },
2026-06-21T23:05:53.1050425Z         "impl": {
2026-06-21T23:05:53.1050516Z           "complete": true,
2026-06-21T23:05:53.1050602Z           "evidence": [
2026-06-21T23:05:53.1050684Z             {
2026-06-21T23:05:53.1050812Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.1050893Z               "line": 23
2026-06-21T23:05:53.1050970Z             },
2026-06-21T23:05:53.1051051Z             {
2026-06-21T23:05:53.1051164Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.1051242Z               "line": 46
2026-06-21T23:05:53.1051322Z             },
2026-06-21T23:05:53.1051407Z             {
2026-06-21T23:05:53.1051523Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.1051618Z               "line": 97
2026-06-21T23:05:53.1051695Z             },
2026-06-21T23:05:53.1051785Z             {
2026-06-21T23:05:53.1051900Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.1051975Z               "line": 125
2026-06-21T23:05:53.1052056Z             },
2026-06-21T23:05:53.1052133Z             {
2026-06-21T23:05:53.1052257Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.1052337Z               "line": 207
2026-06-21T23:05:53.1052429Z             },
2026-06-21T23:05:53.1052511Z             {
2026-06-21T23:05:53.1052619Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.1052709Z               "line": 231
2026-06-21T23:05:53.1052790Z             },
2026-06-21T23:05:53.1052871Z             {
2026-06-21T23:05:53.1052983Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.1053073Z               "line": 467
2026-06-21T23:05:53.1053359Z             },
2026-06-21T23:05:53.1053436Z             {
2026-06-21T23:05:53.1053560Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:53.1053741Z               "line": 25
2026-06-21T23:05:53.1053827Z             },
2026-06-21T23:05:53.1053913Z             {
2026-06-21T23:05:53.1054031Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:53.1054119Z               "line": 120
2026-06-21T23:05:53.1054203Z             },
2026-06-21T23:05:53.1054289Z             {
2026-06-21T23:05:53.1054404Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:53.1054494Z               "line": 148
2026-06-21T23:05:53.1054580Z             },
2026-06-21T23:05:53.1054657Z             {
2026-06-21T23:05:53.1054772Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:53.1054857Z               "line": 165
2026-06-21T23:05:53.1054933Z             },
2026-06-21T23:05:53.1055005Z             {
2026-06-21T23:05:53.1055138Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:53.1055224Z               "line": 180
2026-06-21T23:05:53.1055310Z             },
2026-06-21T23:05:53.1055392Z             {
2026-06-21T23:05:53.1055495Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:53.1055581Z               "line": 198
2026-06-21T23:05:53.1059030Z             },
2026-06-21T23:05:53.1059368Z             {
2026-06-21T23:05:53.1059583Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:53.1059673Z               "line": 207
2026-06-21T23:05:53.1059768Z             },
2026-06-21T23:05:53.1059851Z             {
2026-06-21T23:05:53.1059992Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T23:05:53.1060083Z               "line": 16
2026-06-21T23:05:53.1060166Z             },
2026-06-21T23:05:53.1060251Z             {
2026-06-21T23:05:53.1060370Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T23:05:53.1060456Z               "line": 63
2026-06-21T23:05:53.1060561Z             }
2026-06-21T23:05:53.1060645Z           ]
2026-06-21T23:05:53.1060735Z         },
2026-06-21T23:05:53.1060821Z         "int": {
2026-06-21T23:05:53.1060925Z           "complete": false,
2026-06-21T23:05:53.1061009Z           "evidence": []
2026-06-21T23:05:53.1061090Z         },
2026-06-21T23:05:53.1061172Z         "unit": {
2026-06-21T23:05:53.1061254Z           "complete": true,
2026-06-21T23:05:53.1061343Z           "evidence": [
2026-06-21T23:05:53.1061419Z             {
2026-06-21T23:05:53.1061558Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.1061634Z               "line": 584
2026-06-21T23:05:53.1061720Z             },
2026-06-21T23:05:53.1061807Z             {
2026-06-21T23:05:53.1061931Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.1062015Z               "line": 594
2026-06-21T23:05:53.1062102Z             },
2026-06-21T23:05:53.1062188Z             {
2026-06-21T23:05:53.1062316Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.1062408Z               "line": 616
2026-06-21T23:05:53.1062489Z             },
2026-06-21T23:05:53.1062563Z             {
2026-06-21T23:05:53.1062679Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.1062770Z               "line": 632
2026-06-21T23:05:53.1062855Z             },
2026-06-21T23:05:53.1062927Z             {
2026-06-21T23:05:53.1063047Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:05:53.1063133Z               "line": 690
2026-06-21T23:05:53.1063207Z             },
2026-06-21T23:05:53.1063293Z             {
2026-06-21T23:05:53.1063417Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:53.1063506Z               "line": 472
2026-06-21T23:05:53.1063586Z             },
2026-06-21T23:05:53.1063667Z             {
2026-06-21T23:05:53.1063777Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:05:53.1064068Z               "line": 507
2026-06-21T23:05:53.1064149Z             },
2026-06-21T23:05:53.1064224Z             {
2026-06-21T23:05:53.1064464Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T23:05:53.1064549Z               "line": 120
2026-06-21T23:05:53.1064631Z             },
2026-06-21T23:05:53.1064717Z             {
2026-06-21T23:05:53.1064830Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T23:05:53.1064916Z               "line": 128
2026-06-21T23:05:53.1064999Z             }
2026-06-21T23:05:53.1065088Z           ]
2026-06-21T23:05:53.1065164Z         }
2026-06-21T23:05:53.1065250Z       }
2026-06-21T23:05:53.1065332Z     },
2026-06-21T23:05:53.1065412Z     {
2026-06-21T23:05:53.1065512Z       "id": "REQ-SUBNET-1",
2026-06-21T23:05:53.1065827Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T23:05:53.1065928Z       "requiredStages": [
2026-06-21T23:05:53.1066023Z         "impl",
2026-06-21T23:05:53.1066112Z         "unit"
2026-06-21T23:05:53.1066188Z       ],
2026-06-21T23:05:53.1066289Z       "stages": {
2026-06-21T23:05:53.1066375Z         "doc": {
2026-06-21T23:05:53.1066465Z           "complete": false,
2026-06-21T23:05:53.1066560Z           "evidence": []
2026-06-21T23:05:53.1066637Z         },
2026-06-21T23:05:53.1066732Z         "impl": {
2026-06-21T23:05:53.1066817Z           "complete": true,
2026-06-21T23:05:53.1066905Z           "evidence": [
2026-06-21T23:05:53.1066985Z             {
2026-06-21T23:05:53.1067123Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1067209Z               "line": 281
2026-06-21T23:05:53.1067285Z             },
2026-06-21T23:05:53.1067366Z             {
2026-06-21T23:05:53.1067495Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1067586Z               "line": 651
2026-06-21T23:05:53.1067676Z             },
2026-06-21T23:05:53.1067743Z             {
2026-06-21T23:05:53.1067863Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1067939Z               "line": 3399
2026-06-21T23:05:53.1068024Z             },
2026-06-21T23:05:53.1068105Z             {
2026-06-21T23:05:53.1068216Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1068295Z               "line": 3709
2026-06-21T23:05:53.1068371Z             },
2026-06-21T23:05:53.1068452Z             {
2026-06-21T23:05:53.1068552Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1068636Z               "line": 3728
2026-06-21T23:05:53.1068717Z             },
2026-06-21T23:05:53.1068793Z             {
2026-06-21T23:05:53.1068904Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1069050Z               "line": 3792
2026-06-21T23:05:53.1069127Z             },
2026-06-21T23:05:53.1069209Z             {
2026-06-21T23:05:53.1069308Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1069393Z               "line": 3834
2026-06-21T23:05:53.1069481Z             },
2026-06-21T23:05:53.1069562Z             {
2026-06-21T23:05:53.1069656Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1069742Z               "line": 4023
2026-06-21T23:05:53.1069824Z             },
2026-06-21T23:05:53.1069904Z             {
2026-06-21T23:05:53.1069999Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1070091Z               "line": 4093
2026-06-21T23:05:53.1070172Z             },
2026-06-21T23:05:53.1070253Z             {
2026-06-21T23:05:53.1070352Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1070439Z               "line": 4317
2026-06-21T23:05:53.1070515Z             },
2026-06-21T23:05:53.1070596Z             {
2026-06-21T23:05:53.1070692Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1070778Z               "line": 4961
2026-06-21T23:05:53.1070862Z             },
2026-06-21T23:05:53.1070944Z             {
2026-06-21T23:05:53.1071045Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:53.1071248Z               "line": 418
2026-06-21T23:05:53.1071333Z             }
2026-06-21T23:05:53.1071414Z           ]
2026-06-21T23:05:53.1071593Z         },
2026-06-21T23:05:53.1071670Z         "int": {
2026-06-21T23:05:53.1071766Z           "complete": false,
2026-06-21T23:05:53.1071847Z           "evidence": []
2026-06-21T23:05:53.1071922Z         },
2026-06-21T23:05:53.1072004Z         "unit": {
2026-06-21T23:05:53.1072091Z           "complete": true,
2026-06-21T23:05:53.1072176Z           "evidence": [
2026-06-21T23:05:53.1072256Z             {
2026-06-21T23:05:53.1072376Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1072462Z               "line": 1584
2026-06-21T23:05:53.1072538Z             },
2026-06-21T23:05:53.1072623Z             {
2026-06-21T23:05:53.1072715Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1072795Z               "line": 9964
2026-06-21T23:05:53.1072871Z             },
2026-06-21T23:05:53.1072963Z             {
2026-06-21T23:05:53.1073068Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1073153Z               "line": 10134
2026-06-21T23:05:53.1073239Z             },
2026-06-21T23:05:53.1073311Z             {
2026-06-21T23:05:53.1073415Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1073487Z               "line": 10141
2026-06-21T23:05:53.1073568Z             },
2026-06-21T23:05:53.1073645Z             {
2026-06-21T23:05:53.1073753Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1073834Z               "line": 10194
2026-06-21T23:05:53.1073915Z             },
2026-06-21T23:05:53.1073991Z             {
2026-06-21T23:05:53.1074080Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1074160Z               "line": 10211
2026-06-21T23:05:53.1074247Z             },
2026-06-21T23:05:53.1074328Z             {
2026-06-21T23:05:53.1074432Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1074513Z               "line": 10241
2026-06-21T23:05:53.1074600Z             },
2026-06-21T23:05:53.1074680Z             {
2026-06-21T23:05:53.1074770Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1074851Z               "line": 10357
2026-06-21T23:05:53.1074939Z             },
2026-06-21T23:05:53.1075024Z             {
2026-06-21T23:05:53.1075118Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1075205Z               "line": 10508
2026-06-21T23:05:53.1075286Z             }
2026-06-21T23:05:53.1075367Z           ]
2026-06-21T23:05:53.1075443Z         }
2026-06-21T23:05:53.1075530Z       }
2026-06-21T23:05:53.1075615Z     },
2026-06-21T23:05:53.1075692Z     {
2026-06-21T23:05:53.1075791Z       "id": "REQ-SUBNET-2",
2026-06-21T23:05:53.1076020Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T23:05:53.1076106Z       "requiredStages": [
2026-06-21T23:05:53.1076188Z         "impl",
2026-06-21T23:05:53.1076278Z         "unit",
2026-06-21T23:05:53.1076359Z         "int"
2026-06-21T23:05:53.1076440Z       ],
2026-06-21T23:05:53.1076527Z       "stages": {
2026-06-21T23:05:53.1076616Z         "doc": {
2026-06-21T23:05:53.1076706Z           "complete": true,
2026-06-21T23:05:53.1076792Z           "evidence": [
2026-06-21T23:05:53.1076878Z             {
2026-06-21T23:05:53.1077034Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T23:05:53.1077116Z               "line": 60
2026-06-21T23:05:53.1077202Z             }
2026-06-21T23:05:53.1077278Z           ]
2026-06-21T23:05:53.1077359Z         },
2026-06-21T23:05:53.1077440Z         "impl": {
2026-06-21T23:05:53.1077526Z           "complete": true,
2026-06-21T23:05:53.1077612Z           "evidence": [
2026-06-21T23:05:53.1077683Z             {
2026-06-21T23:05:53.1077799Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:53.1077884Z               "line": 980
2026-06-21T23:05:53.1077964Z             },
2026-06-21T23:05:53.1078045Z             {
2026-06-21T23:05:53.1078246Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:53.1078332Z               "line": 2199
2026-06-21T23:05:53.1078504Z             },
2026-06-21T23:05:53.1078594Z             {
2026-06-21T23:05:53.1078699Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.1078786Z               "line": 683
2026-06-21T23:05:53.1078860Z             },
2026-06-21T23:05:53.1079007Z             {
2026-06-21T23:05:53.1079117Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:05:53.1079192Z               "line": 867
2026-06-21T23:05:53.1079272Z             },
2026-06-21T23:05:53.1079349Z             {
2026-06-21T23:05:53.1079483Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.1079563Z               "line": 26
2026-06-21T23:05:53.1079644Z             },
2026-06-21T23:05:53.1079726Z             {
2026-06-21T23:05:53.1079840Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.1079930Z               "line": 60
2026-06-21T23:05:53.1080017Z             },
2026-06-21T23:05:53.1080093Z             {
2026-06-21T23:05:53.1080197Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.1080278Z               "line": 168
2026-06-21T23:05:53.1080361Z             },
2026-06-21T23:05:53.1080436Z             {
2026-06-21T23:05:53.1080550Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.1080627Z               "line": 295
2026-06-21T23:05:53.1080708Z             },
2026-06-21T23:05:53.1080789Z             {
2026-06-21T23:05:53.1080898Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.1080986Z               "line": 417
2026-06-21T23:05:53.1081056Z             },
2026-06-21T23:05:53.1081127Z             {
2026-06-21T23:05:53.1081252Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:05:53.1081333Z               "line": 252
2026-06-21T23:05:53.1081418Z             },
2026-06-21T23:05:53.1081499Z             {
2026-06-21T23:05:53.1081605Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1081686Z               "line": 3755
2026-06-21T23:05:53.1081780Z             },
2026-06-21T23:05:53.1081855Z             {
2026-06-21T23:05:53.1081961Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1082045Z               "line": 4256
2026-06-21T23:05:53.1082116Z             },
2026-06-21T23:05:53.1082196Z             {
2026-06-21T23:05:53.1082283Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1082374Z               "line": 4892
2026-06-21T23:05:53.1082459Z             }
2026-06-21T23:05:53.1082530Z           ]
2026-06-21T23:05:53.1082617Z         },
2026-06-21T23:05:53.1082688Z         "int": {
2026-06-21T23:05:53.1082778Z           "complete": true,
2026-06-21T23:05:53.1082860Z           "evidence": [
2026-06-21T23:05:53.1082941Z             {
2026-06-21T23:05:53.1083055Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T23:05:53.1083140Z               "line": 22
2026-06-21T23:05:53.1083228Z             },
2026-06-21T23:05:53.1083308Z             {
2026-06-21T23:05:53.1083427Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.1083513Z               "line": 645
2026-06-21T23:05:53.1083594Z             },
2026-06-21T23:05:53.1083661Z             {
2026-06-21T23:05:53.1083765Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.1083853Z               "line": 887
2026-06-21T23:05:53.1083929Z             }
2026-06-21T23:05:53.1084013Z           ]
2026-06-21T23:05:53.1084089Z         },
2026-06-21T23:05:53.1084172Z         "unit": {
2026-06-21T23:05:53.1084253Z           "complete": true,
2026-06-21T23:05:53.1084337Z           "evidence": [
2026-06-21T23:05:53.1084417Z             {
2026-06-21T23:05:53.1084527Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.1084612Z               "line": 586
2026-06-21T23:05:53.1084701Z             },
2026-06-21T23:05:53.1084782Z             {
2026-06-21T23:05:53.1084983Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1085068Z               "line": 10004
2026-06-21T23:05:53.1085245Z             },
2026-06-21T23:05:53.1085326Z             {
2026-06-21T23:05:53.1085421Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1085503Z               "line": 10715
2026-06-21T23:05:53.1085584Z             }
2026-06-21T23:05:53.1085664Z           ]
2026-06-21T23:05:53.1085751Z         }
2026-06-21T23:05:53.1085837Z       }
2026-06-21T23:05:53.1085912Z     },
2026-06-21T23:05:53.1085993Z     {
2026-06-21T23:05:53.1086075Z       "id": "REQ-SUBNET-3",
2026-06-21T23:05:53.1086342Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T23:05:53.1086433Z       "requiredStages": [
2026-06-21T23:05:53.1086518Z         "impl",
2026-06-21T23:05:53.1086604Z         "unit"
2026-06-21T23:05:53.1086681Z       ],
2026-06-21T23:05:53.1086767Z       "stages": {
2026-06-21T23:05:53.1086857Z         "doc": {
2026-06-21T23:05:53.1086947Z           "complete": false,
2026-06-21T23:05:53.1087039Z           "evidence": []
2026-06-21T23:05:53.1087116Z         },
2026-06-21T23:05:53.1087200Z         "impl": {
2026-06-21T23:05:53.1087280Z           "complete": true,
2026-06-21T23:05:53.1087376Z           "evidence": [
2026-06-21T23:05:53.1087457Z             {
2026-06-21T23:05:53.1087585Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1087661Z               "line": 152
2026-06-21T23:05:53.1087734Z             },
2026-06-21T23:05:53.1087820Z             {
2026-06-21T23:05:53.1087928Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1088010Z               "line": 299
2026-06-21T23:05:53.1088082Z             },
2026-06-21T23:05:53.1088168Z             {
2026-06-21T23:05:53.1088286Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1088373Z               "line": 443
2026-06-21T23:05:53.1088458Z             },
2026-06-21T23:05:53.1088538Z             {
2026-06-21T23:05:53.1088659Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1088735Z               "line": 532
2026-06-21T23:05:53.1088816Z             },
2026-06-21T23:05:53.1088901Z             {
2026-06-21T23:05:53.1089139Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.1089221Z               "line": 125
2026-06-21T23:05:53.1089298Z             },
2026-06-21T23:05:53.1089383Z             {
2026-06-21T23:05:53.1089487Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.1089577Z               "line": 253
2026-06-21T23:05:53.1089649Z             },
2026-06-21T23:05:53.1089738Z             {
2026-06-21T23:05:53.1089851Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.1089928Z               "line": 264
2026-06-21T23:05:53.1090005Z             },
2026-06-21T23:05:53.1090076Z             {
2026-06-21T23:05:53.1090194Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.1090276Z               "line": 285
2026-06-21T23:05:53.1090357Z             },
2026-06-21T23:05:53.1090442Z             {
2026-06-21T23:05:53.1090548Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.1090634Z               "line": 621
2026-06-21T23:05:53.1090715Z             },
2026-06-21T23:05:53.1090800Z             {
2026-06-21T23:05:53.1090911Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.1090996Z               "line": 680
2026-06-21T23:05:53.1091077Z             },
2026-06-21T23:05:53.1091158Z             {
2026-06-21T23:05:53.1091273Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:05:53.1091359Z               "line": 61
2026-06-21T23:05:53.1091444Z             },
2026-06-21T23:05:53.1091516Z             {
2026-06-21T23:05:53.1091621Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:05:53.1091711Z               "line": 90
2026-06-21T23:05:53.1091903Z             },
2026-06-21T23:05:53.1091982Z             {
2026-06-21T23:05:53.1092185Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:05:53.1092274Z               "line": 125
2026-06-21T23:05:53.1092359Z             },
2026-06-21T23:05:53.1092439Z             {
2026-06-21T23:05:53.1092549Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T23:05:53.1092628Z               "line": 9
2026-06-21T23:05:53.1092714Z             },
2026-06-21T23:05:53.1092785Z             {
2026-06-21T23:05:53.1092877Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1092967Z               "line": 4093
2026-06-21T23:05:53.1093042Z             },
2026-06-21T23:05:53.1093129Z             {
2026-06-21T23:05:53.1093229Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:53.1093324Z               "line": 445
2026-06-21T23:05:53.1093395Z             }
2026-06-21T23:05:53.1093478Z           ]
2026-06-21T23:05:53.1093573Z         },
2026-06-21T23:05:53.1093653Z         "int": {
2026-06-21T23:05:53.1093744Z           "complete": false,
2026-06-21T23:05:53.1093821Z           "evidence": []
2026-06-21T23:05:53.1093906Z         },
2026-06-21T23:05:53.1093987Z         "unit": {
2026-06-21T23:05:53.1094078Z           "complete": true,
2026-06-21T23:05:53.1094169Z           "evidence": [
2026-06-21T23:05:53.1094244Z             {
2026-06-21T23:05:53.1094369Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1094451Z               "line": 1356
2026-06-21T23:05:53.1094535Z             },
2026-06-21T23:05:53.1094617Z             {
2026-06-21T23:05:53.1094737Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1094827Z               "line": 1713
2026-06-21T23:05:53.1094902Z             },
2026-06-21T23:05:53.1094987Z             {
2026-06-21T23:05:53.1095097Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:53.1095191Z               "line": 892
2026-06-21T23:05:53.1095270Z             },
2026-06-21T23:05:53.1095352Z             {
2026-06-21T23:05:53.1095472Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.1095553Z               "line": 991
2026-06-21T23:05:53.1095633Z             },
2026-06-21T23:05:53.1095710Z             {
2026-06-21T23:05:53.1095830Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.1095914Z               "line": 1041
2026-06-21T23:05:53.1095996Z             },
2026-06-21T23:05:53.1096087Z             {
2026-06-21T23:05:53.1096196Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.1096287Z               "line": 1100
2026-06-21T23:05:53.1096368Z             },
2026-06-21T23:05:53.1096454Z             {
2026-06-21T23:05:53.1096572Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:05:53.1096660Z               "line": 234
2026-06-21T23:05:53.1096755Z             },
2026-06-21T23:05:53.1096831Z             {
2026-06-21T23:05:53.1096955Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T23:05:53.1097046Z               "line": 49
2026-06-21T23:05:53.1097140Z             },
2026-06-21T23:05:53.1097221Z             {
2026-06-21T23:05:53.1097318Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1097407Z               "line": 10357
2026-06-21T23:05:53.1097489Z             },
2026-06-21T23:05:53.1097570Z             {
2026-06-21T23:05:53.1097666Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1097750Z               "line": 10463
2026-06-21T23:05:53.1097840Z             },
2026-06-21T23:05:53.1097916Z             {
2026-06-21T23:05:53.1098017Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1098103Z               "line": 10681
2026-06-21T23:05:53.1098183Z             }
2026-06-21T23:05:53.1098256Z           ]
2026-06-21T23:05:53.1098346Z         }
2026-06-21T23:05:53.1098432Z       }
2026-06-21T23:05:53.1098507Z     },
2026-06-21T23:05:53.1098675Z     {
2026-06-21T23:05:53.1098760Z       "id": "REQ-SUBNET-4",
2026-06-21T23:05:53.1099161Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T23:05:53.1099361Z       "requiredStages": [
2026-06-21T23:05:53.1099437Z         "impl",
2026-06-21T23:05:53.1099520Z         "unit"
2026-06-21T23:05:53.1099601Z       ],
2026-06-21T23:05:53.1099685Z       "stages": {
2026-06-21T23:05:53.1099761Z         "doc": {
2026-06-21T23:05:53.1099854Z           "complete": true,
2026-06-21T23:05:53.1099934Z           "evidence": [
2026-06-21T23:05:53.1100014Z             {
2026-06-21T23:05:53.1100162Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T23:05:53.1100247Z               "line": 60
2026-06-21T23:05:53.1100331Z             }
2026-06-21T23:05:53.1100412Z           ]
2026-06-21T23:05:53.1100493Z         },
2026-06-21T23:05:53.1100574Z         "impl": {
2026-06-21T23:05:53.1100664Z           "complete": true,
2026-06-21T23:05:53.1100759Z           "evidence": [
2026-06-21T23:05:53.1100831Z             {
2026-06-21T23:05:53.1100942Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1101026Z               "line": 3399
2026-06-21T23:05:53.1101108Z             },
2026-06-21T23:05:53.1101185Z             {
2026-06-21T23:05:53.1101280Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1101360Z               "line": 4859
2026-06-21T23:05:53.1101438Z             },
2026-06-21T23:05:53.1101519Z             {
2026-06-21T23:05:53.1101604Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1101689Z               "line": 4892
2026-06-21T23:05:53.1101771Z             }
2026-06-21T23:05:53.1101843Z           ]
2026-06-21T23:05:53.1101919Z         },
2026-06-21T23:05:53.1101990Z         "int": {
2026-06-21T23:05:53.1102086Z           "complete": false,
2026-06-21T23:05:53.1102172Z           "evidence": []
2026-06-21T23:05:53.1102252Z         },
2026-06-21T23:05:53.1102333Z         "unit": {
2026-06-21T23:05:53.1102415Z           "complete": true,
2026-06-21T23:05:53.1102501Z           "evidence": [
2026-06-21T23:05:53.1102591Z             {
2026-06-21T23:05:53.1102697Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1102774Z               "line": 10120
2026-06-21T23:05:53.1102857Z             },
2026-06-21T23:05:53.1102929Z             {
2026-06-21T23:05:53.1103033Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1103119Z               "line": 10194
2026-06-21T23:05:53.1103198Z             }
2026-06-21T23:05:53.1103288Z           ]
2026-06-21T23:05:53.1103364Z         }
2026-06-21T23:05:53.1103446Z       }
2026-06-21T23:05:53.1103527Z     },
2026-06-21T23:05:53.1103612Z     {
2026-06-21T23:05:53.1103699Z       "id": "REQ-SUBNET-5",
2026-06-21T23:05:53.1104881Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T23:05:53.1104987Z       "requiredStages": [
2026-06-21T23:05:53.1105077Z         "impl",
2026-06-21T23:05:53.1105157Z         "unit",
2026-06-21T23:05:53.1105239Z         "int"
2026-06-21T23:05:53.1105307Z       ],
2026-06-21T23:05:53.1105396Z       "stages": {
2026-06-21T23:05:53.1105476Z         "doc": {
2026-06-21T23:05:53.1105571Z           "complete": false,
2026-06-21T23:05:53.1105653Z           "evidence": []
2026-06-21T23:05:53.1105737Z         },
2026-06-21T23:05:53.1105822Z         "impl": {
2026-06-21T23:05:53.1105912Z           "complete": true,
2026-06-21T23:05:53.1105999Z           "evidence": [
2026-06-21T23:05:53.1106080Z             {
2026-06-21T23:05:53.1106203Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:05:53.1106290Z               "line": 128
2026-06-21T23:05:53.1106489Z             },
2026-06-21T23:05:53.1106576Z             {
2026-06-21T23:05:53.1106695Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:05:53.1106871Z               "line": 413
2026-06-21T23:05:53.1106952Z             },
2026-06-21T23:05:53.1107033Z             {
2026-06-21T23:05:53.1107152Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.1107239Z               "line": 74
2026-06-21T23:05:53.1107324Z             },
2026-06-21T23:05:53.1107400Z             {
2026-06-21T23:05:53.1107520Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:53.1107601Z               "line": 332
2026-06-21T23:05:53.1107686Z             },
2026-06-21T23:05:53.1107767Z             {
2026-06-21T23:05:53.1107869Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:53.1107953Z               "line": 621
2026-06-21T23:05:53.1108029Z             },
2026-06-21T23:05:53.1108111Z             {
2026-06-21T23:05:53.1108231Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T23:05:53.1108315Z               "line": 31
2026-06-21T23:05:53.1108405Z             },
2026-06-21T23:05:53.1108481Z             {
2026-06-21T23:05:53.1108597Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T23:05:53.1108672Z               "line": 50
2026-06-21T23:05:53.1108758Z             },
2026-06-21T23:05:53.1108835Z             {
2026-06-21T23:05:53.1109006Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T23:05:53.1109092Z               "line": 69
2026-06-21T23:05:53.1109174Z             },
2026-06-21T23:05:53.1109244Z             {
2026-06-21T23:05:53.1109358Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T23:05:53.1109440Z               "line": 113
2026-06-21T23:05:53.1109521Z             },
2026-06-21T23:05:53.1109602Z             {
2026-06-21T23:05:53.1109726Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T23:05:53.1109803Z               "line": 25
2026-06-21T23:05:53.1109898Z             },
2026-06-21T23:05:53.1109969Z             {
2026-06-21T23:05:53.1110104Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T23:05:53.1110189Z               "line": 34
2026-06-21T23:05:53.1110274Z             },
2026-06-21T23:05:53.1110361Z             {
2026-06-21T23:05:53.1110476Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T23:05:53.1110565Z               "line": 17
2026-06-21T23:05:53.1110645Z             },
2026-06-21T23:05:53.1110726Z             {
2026-06-21T23:05:53.1110826Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1110910Z               "line": 4817
2026-06-21T23:05:53.1110995Z             },
2026-06-21T23:05:53.1111067Z             {
2026-06-21T23:05:53.1111174Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:05:53.1111257Z               "line": 419
2026-06-21T23:05:53.1111344Z             }
2026-06-21T23:05:53.1111426Z           ]
2026-06-21T23:05:53.1111516Z         },
2026-06-21T23:05:53.1111596Z         "int": {
2026-06-21T23:05:53.1111683Z           "complete": true,
2026-06-21T23:05:53.1111769Z           "evidence": [
2026-06-21T23:05:53.1111850Z             {
2026-06-21T23:05:53.1111968Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:53.1112046Z               "line": 821
2026-06-21T23:05:53.1112126Z             }
2026-06-21T23:05:53.1112211Z           ]
2026-06-21T23:05:53.1112288Z         },
2026-06-21T23:05:53.1112379Z         "unit": {
2026-06-21T23:05:53.1112464Z           "complete": true,
2026-06-21T23:05:53.1112545Z           "evidence": [
2026-06-21T23:05:53.1112627Z             {
2026-06-21T23:05:53.1112751Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:05:53.1112827Z               "line": 341
2026-06-21T23:05:53.1112908Z             },
2026-06-21T23:05:53.1112990Z             {
2026-06-21T23:05:53.1113107Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:05:53.1113300Z               "line": 1115
2026-06-21T23:05:53.1113376Z             },
2026-06-21T23:05:53.1113460Z             {
2026-06-21T23:05:53.1113665Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T23:05:53.1113749Z               "line": 151
2026-06-21T23:05:53.1113829Z             },
2026-06-21T23:05:53.1113911Z             {
2026-06-21T23:05:53.1114026Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T23:05:53.1114115Z               "line": 61
2026-06-21T23:05:53.1114187Z             },
2026-06-21T23:05:53.1114274Z             {
2026-06-21T23:05:53.1114388Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T23:05:53.1114468Z               "line": 111
2026-06-21T23:05:53.1114550Z             },
2026-06-21T23:05:53.1114631Z             {
2026-06-21T23:05:53.1114754Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T23:05:53.1114835Z               "line": 138
2026-06-21T23:05:53.1114927Z             },
2026-06-21T23:05:53.1115017Z             {
2026-06-21T23:05:53.1115126Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T23:05:53.1115218Z               "line": 148
2026-06-21T23:05:53.1115294Z             },
2026-06-21T23:05:53.1115369Z             {
2026-06-21T23:05:53.1115470Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1115557Z               "line": 10021
2026-06-21T23:05:53.1115637Z             }
2026-06-21T23:05:53.1115713Z           ]
2026-06-21T23:05:53.1115794Z         }
2026-06-21T23:05:53.1115877Z       }
2026-06-21T23:05:53.1115961Z     },
2026-06-21T23:05:53.1116041Z     {
2026-06-21T23:05:53.1116136Z       "id": "REQ-SUBNET-6",
2026-06-21T23:05:53.1116806Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T23:05:53.1116902Z       "requiredStages": [
2026-06-21T23:05:53.1116997Z         "impl",
2026-06-21T23:05:53.1117073Z         "unit"
2026-06-21T23:05:53.1117160Z       ],
2026-06-21T23:05:53.1117236Z       "stages": {
2026-06-21T23:05:53.1117312Z         "doc": {
2026-06-21T23:05:53.1117397Z           "complete": false,
2026-06-21T23:05:53.1117480Z           "evidence": []
2026-06-21T23:05:53.1117564Z         },
2026-06-21T23:05:53.1117636Z         "impl": {
2026-06-21T23:05:53.1117731Z           "complete": true,
2026-06-21T23:05:53.1117813Z           "evidence": [
2026-06-21T23:05:53.1117903Z             {
2026-06-21T23:05:53.1118008Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.1118095Z               "line": 254
2026-06-21T23:05:53.1118180Z             },
2026-06-21T23:05:53.1118260Z             {
2026-06-21T23:05:53.1118356Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1118443Z               "line": 4475
2026-06-21T23:05:53.1118523Z             },
2026-06-21T23:05:53.1118604Z             {
2026-06-21T23:05:53.1118710Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1118791Z               "line": 4492
2026-06-21T23:05:53.1118870Z             },
2026-06-21T23:05:53.1119032Z             {
2026-06-21T23:05:53.1119124Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1119209Z               "line": 4545
2026-06-21T23:05:53.1119284Z             },
2026-06-21T23:05:53.1119366Z             {
2026-06-21T23:05:53.1119476Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1119561Z               "line": 4568
2026-06-21T23:05:53.1119642Z             }
2026-06-21T23:05:53.1119724Z           ]
2026-06-21T23:05:53.1119810Z         },
2026-06-21T23:05:53.1119890Z         "int": {
2026-06-21T23:05:53.1119981Z           "complete": false,
2026-06-21T23:05:53.1120067Z           "evidence": []
2026-06-21T23:05:53.1120148Z         },
2026-06-21T23:05:53.1120233Z         "unit": {
2026-06-21T23:05:53.1120320Z           "complete": true,
2026-06-21T23:05:53.1120520Z           "evidence": [
2026-06-21T23:05:53.1120591Z             {
2026-06-21T23:05:53.1120692Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1120873Z               "line": 10035
2026-06-21T23:05:53.1120959Z             },
2026-06-21T23:05:53.1121040Z             {
2026-06-21T23:05:53.1121134Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1121225Z               "line": 10068
2026-06-21T23:05:53.1121296Z             },
2026-06-21T23:05:53.1124747Z             {
2026-06-21T23:05:53.1124891Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1124976Z               "line": 10077
2026-06-21T23:05:53.1125057Z             }
2026-06-21T23:05:53.1125139Z           ]
2026-06-21T23:05:53.1125210Z         }
2026-06-21T23:05:53.1125291Z       }
2026-06-21T23:05:53.1125371Z     },
2026-06-21T23:05:53.1125449Z     {
2026-06-21T23:05:53.1125530Z       "id": "REQ-SUBNET-7",
2026-06-21T23:05:53.1127163Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T23:05:53.1127276Z       "requiredStages": [
2026-06-21T23:05:53.1127357Z         "impl",
2026-06-21T23:05:53.1127443Z         "unit"
2026-06-21T23:05:53.1127524Z       ],
2026-06-21T23:05:53.1127609Z       "stages": {
2026-06-21T23:05:53.1127686Z         "doc": {
2026-06-21T23:05:53.1127772Z           "complete": false,
2026-06-21T23:05:53.1127853Z           "evidence": []
2026-06-21T23:05:53.1127938Z         },
2026-06-21T23:05:53.1128021Z         "impl": {
2026-06-21T23:05:53.1128106Z           "complete": true,
2026-06-21T23:05:53.1128205Z           "evidence": [
2026-06-21T23:05:53.1128277Z             {
2026-06-21T23:05:53.1128420Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T23:05:53.1128506Z               "line": 17
2026-06-21T23:05:53.1128591Z             },
2026-06-21T23:05:53.1128674Z             {
2026-06-21T23:05:53.1128782Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.1128873Z               "line": 103
2026-06-21T23:05:53.1129069Z             },
2026-06-21T23:05:53.1129159Z             {
2026-06-21T23:05:53.1129270Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:05:53.1129356Z               "line": 312
2026-06-21T23:05:53.1129444Z             },
2026-06-21T23:05:53.1129529Z             {
2026-06-21T23:05:53.1129650Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:05:53.1129736Z               "line": 131
2026-06-21T23:05:53.1129816Z             },
2026-06-21T23:05:53.1129902Z             {
2026-06-21T23:05:53.1130027Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1130116Z               "line": 160
2026-06-21T23:05:53.1130187Z             },
2026-06-21T23:05:53.1130270Z             {
2026-06-21T23:05:53.1130384Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1130465Z               "line": 447
2026-06-21T23:05:53.1130541Z             },
2026-06-21T23:05:53.1130623Z             {
2026-06-21T23:05:53.1130732Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1130808Z               "line": 670
2026-06-21T23:05:53.1130890Z             },
2026-06-21T23:05:53.1130966Z             {
2026-06-21T23:05:53.1131085Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1131166Z               "line": 710
2026-06-21T23:05:53.1131234Z             },
2026-06-21T23:05:53.1131319Z             {
2026-06-21T23:05:53.1131428Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1131666Z               "line": 766
2026-06-21T23:05:53.1131741Z             },
2026-06-21T23:05:53.1131918Z             {
2026-06-21T23:05:53.1132044Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.1132130Z               "line": 136
2026-06-21T23:05:53.1132207Z             },
2026-06-21T23:05:53.1132289Z             {
2026-06-21T23:05:53.1132411Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.1132478Z               "line": 139
2026-06-21T23:05:53.1132565Z             }
2026-06-21T23:05:53.1132645Z           ]
2026-06-21T23:05:53.1132716Z         },
2026-06-21T23:05:53.1132798Z         "int": {
2026-06-21T23:05:53.1132889Z           "complete": false,
2026-06-21T23:05:53.1132970Z           "evidence": []
2026-06-21T23:05:53.1133055Z         },
2026-06-21T23:05:53.1133138Z         "unit": {
2026-06-21T23:05:53.1133232Z           "complete": true,
2026-06-21T23:05:53.1133313Z           "evidence": [
2026-06-21T23:05:53.1133399Z             {
2026-06-21T23:05:53.1133519Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T23:05:53.1133604Z               "line": 136
2026-06-21T23:05:53.1133684Z             },
2026-06-21T23:05:53.1133767Z             {
2026-06-21T23:05:53.1133890Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T23:05:53.1133971Z               "line": 156
2026-06-21T23:05:53.1134048Z             },
2026-06-21T23:05:53.1134120Z             {
2026-06-21T23:05:53.1134242Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1134328Z               "line": 987
2026-06-21T23:05:53.1134396Z             },
2026-06-21T23:05:53.1134482Z             {
2026-06-21T23:05:53.1134599Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:05:53.1134685Z               "line": 1009
2026-06-21T23:05:53.1134761Z             },
2026-06-21T23:05:53.1134846Z             {
2026-06-21T23:05:53.1134968Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:05:53.1135055Z               "line": 1419
2026-06-21T23:05:53.1135136Z             },
2026-06-21T23:05:53.1135222Z             {
2026-06-21T23:05:53.1135335Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:05:53.1135418Z               "line": 1036
2026-06-21T23:05:53.1135504Z             }
2026-06-21T23:05:53.1135588Z           ]
2026-06-21T23:05:53.1135665Z         }
2026-06-21T23:05:53.1135747Z       }
2026-06-21T23:05:53.1135823Z     },
2026-06-21T23:05:53.1135898Z     {
2026-06-21T23:05:53.1135980Z       "id": "REQ-SUBNET-8",
2026-06-21T23:05:53.1137072Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T23:05:53.1137176Z       "requiredStages": [
2026-06-21T23:05:53.1137261Z         "impl",
2026-06-21T23:05:53.1137342Z         "unit"
2026-06-21T23:05:53.1137427Z       ],
2026-06-21T23:05:53.1137511Z       "stages": {
2026-06-21T23:05:53.1137598Z         "doc": {
2026-06-21T23:05:53.1137679Z           "complete": false,
2026-06-21T23:05:53.1137760Z           "evidence": []
2026-06-21T23:05:53.1137836Z         },
2026-06-21T23:05:53.1137922Z         "impl": {
2026-06-21T23:05:53.1138008Z           "complete": true,
2026-06-21T23:05:53.1138098Z           "evidence": [
2026-06-21T23:05:53.1138179Z             {
2026-06-21T23:05:53.1138276Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1138356Z               "line": 3835
2026-06-21T23:05:53.1138436Z             },
2026-06-21T23:05:53.1138513Z             {
2026-06-21T23:05:53.1138609Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1138689Z               "line": 3864
2026-06-21T23:05:53.1138779Z             },
2026-06-21T23:05:53.1138929Z             {
2026-06-21T23:05:53.1139118Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1139309Z               "line": 3881
2026-06-21T23:05:53.1139395Z             },
2026-06-21T23:05:53.1139486Z             {
2026-06-21T23:05:53.1139587Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1139666Z               "line": 3904
2026-06-21T23:05:53.1139743Z             },
2026-06-21T23:05:53.1139821Z             {
2026-06-21T23:05:53.1139907Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1139995Z               "line": 4318
2026-06-21T23:05:53.1140067Z             }
2026-06-21T23:05:53.1140148Z           ]
2026-06-21T23:05:53.1140229Z         },
2026-06-21T23:05:53.1140310Z         "int": {
2026-06-21T23:05:53.1140400Z           "complete": false,
2026-06-21T23:05:53.1140472Z           "evidence": []
2026-06-21T23:05:53.1140558Z         },
2026-06-21T23:05:53.1140639Z         "unit": {
2026-06-21T23:05:53.1140715Z           "complete": true,
2026-06-21T23:05:53.1140811Z           "evidence": [
2026-06-21T23:05:53.1140887Z             {
2026-06-21T23:05:53.1140982Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1141063Z               "line": 10225
2026-06-21T23:05:53.1141150Z             },
2026-06-21T23:05:53.1141230Z             {
2026-06-21T23:05:53.1141325Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1141411Z               "line": 10241
2026-06-21T23:05:53.1141484Z             }
2026-06-21T23:05:53.1141568Z           ]
2026-06-21T23:05:53.1141649Z         }
2026-06-21T23:05:53.1141726Z       }
2026-06-21T23:05:53.1141808Z     },
2026-06-21T23:05:53.1141888Z     {
2026-06-21T23:05:53.1141974Z       "id": "REQ-TERM-1",
2026-06-21T23:05:53.1142146Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T23:05:53.1142231Z       "requiredStages": [
2026-06-21T23:05:53.1142311Z         "impl",
2026-06-21T23:05:53.1142392Z         "unit"
2026-06-21T23:05:53.1142473Z       ],
2026-06-21T23:05:53.1142571Z       "stages": {
2026-06-21T23:05:53.1142656Z         "doc": {
2026-06-21T23:05:53.1142743Z           "complete": false,
2026-06-21T23:05:53.1142834Z           "evidence": []
2026-06-21T23:05:53.1142910Z         },
2026-06-21T23:05:53.1142985Z         "impl": {
2026-06-21T23:05:53.1143063Z           "complete": true,
2026-06-21T23:05:53.1143144Z           "evidence": [
2026-06-21T23:05:53.1143225Z             {
2026-06-21T23:05:53.1143329Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T23:05:53.1143406Z               "line": 59
2026-06-21T23:05:53.1143473Z             },
2026-06-21T23:05:53.1143553Z             {
2026-06-21T23:05:53.1143654Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T23:05:53.1143730Z               "line": 234
2026-06-21T23:05:53.1143812Z             },
2026-06-21T23:05:53.1143887Z             {
2026-06-21T23:05:53.1144002Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T23:05:53.1144083Z               "line": 100
2026-06-21T23:05:53.1144164Z             }
2026-06-21T23:05:53.1144245Z           ]
2026-06-21T23:05:53.1144327Z         },
2026-06-21T23:05:53.1144412Z         "int": {
2026-06-21T23:05:53.1144497Z           "complete": false,
2026-06-21T23:05:53.1144578Z           "evidence": []
2026-06-21T23:05:53.1144661Z         },
2026-06-21T23:05:53.1144741Z         "unit": {
2026-06-21T23:05:53.1144831Z           "complete": true,
2026-06-21T23:05:53.1144918Z           "evidence": [
2026-06-21T23:05:53.1145000Z             {
2026-06-21T23:05:53.1145112Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T23:05:53.1145193Z               "line": 24
2026-06-21T23:05:53.1145278Z             },
2026-06-21T23:05:53.1145359Z             {
2026-06-21T23:05:53.1145458Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T23:05:53.1145548Z               "line": 56
2026-06-21T23:05:53.1145625Z             }
2026-06-21T23:05:53.1145701Z           ]
2026-06-21T23:05:53.1145782Z         }
2026-06-21T23:05:53.1145968Z       }
2026-06-21T23:05:53.1146049Z     },
2026-06-21T23:05:53.1146125Z     {
2026-06-21T23:05:53.1146273Z       "id": "REQ-TERM-2",
2026-06-21T23:05:53.1146444Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T23:05:53.1146535Z       "requiredStages": [
2026-06-21T23:05:53.1146617Z         "impl",
2026-06-21T23:05:53.1146697Z         "unit"
2026-06-21T23:05:53.1146778Z       ],
2026-06-21T23:05:53.1146859Z       "stages": {
2026-06-21T23:05:53.1146941Z         "doc": {
2026-06-21T23:05:53.1147031Z           "complete": false,
2026-06-21T23:05:53.1147116Z           "evidence": []
2026-06-21T23:05:53.1147194Z         },
2026-06-21T23:05:53.1147270Z         "impl": {
2026-06-21T23:05:53.1147359Z           "complete": true,
2026-06-21T23:05:53.1147436Z           "evidence": [
2026-06-21T23:05:53.1147514Z             {
2026-06-21T23:05:53.1147619Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T23:05:53.1147698Z               "line": 117
2026-06-21T23:05:53.1147788Z             },
2026-06-21T23:05:53.1147864Z             {
2026-06-21T23:05:53.1147968Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T23:05:53.1148053Z               "line": 127
2026-06-21T23:05:53.1148133Z             }
2026-06-21T23:05:53.1148220Z           ]
2026-06-21T23:05:53.1148302Z         },
2026-06-21T23:05:53.1148386Z         "int": {
2026-06-21T23:05:53.1148463Z           "complete": false,
2026-06-21T23:05:53.1148545Z           "evidence": []
2026-06-21T23:05:53.1148631Z         },
2026-06-21T23:05:53.1148715Z         "unit": {
2026-06-21T23:05:53.1148802Z           "complete": true,
2026-06-21T23:05:53.1148888Z           "evidence": [
2026-06-21T23:05:53.1149034Z             {
2026-06-21T23:05:53.1149150Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T23:05:53.1149235Z               "line": 46
2026-06-21T23:05:53.1149316Z             },
2026-06-21T23:05:53.1149397Z             {
2026-06-21T23:05:53.1149504Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T23:05:53.1149588Z               "line": 77
2026-06-21T23:05:53.1149674Z             }
2026-06-21T23:05:53.1149746Z           ]
2026-06-21T23:05:53.1149828Z         }
2026-06-21T23:05:53.1149907Z       }
2026-06-21T23:05:53.1149983Z     },
2026-06-21T23:05:53.1150066Z     {
2026-06-21T23:05:53.1150152Z       "id": "REQ-TERM-3",
2026-06-21T23:05:53.1150294Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T23:05:53.1150371Z       "requiredStages": [
2026-06-21T23:05:53.1150453Z         "impl",
2026-06-21T23:05:53.1150528Z         "unit"
2026-06-21T23:05:53.1150608Z       ],
2026-06-21T23:05:53.1150688Z       "stages": {
2026-06-21T23:05:53.1150765Z         "doc": {
2026-06-21T23:05:53.1150856Z           "complete": false,
2026-06-21T23:05:53.1150936Z           "evidence": []
2026-06-21T23:05:53.1151012Z         },
2026-06-21T23:05:53.1151085Z         "impl": {
2026-06-21T23:05:53.1151176Z           "complete": true,
2026-06-21T23:05:53.1151260Z           "evidence": [
2026-06-21T23:05:53.1151332Z             {
2026-06-21T23:05:53.1151433Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T23:05:53.1151523Z               "line": 71
2026-06-21T23:05:53.1151604Z             }
2026-06-21T23:05:53.1151686Z           ]
2026-06-21T23:05:53.1151767Z         },
2026-06-21T23:05:53.1151848Z         "int": {
2026-06-21T23:05:53.1151923Z           "complete": false,
2026-06-21T23:05:53.1152010Z           "evidence": []
2026-06-21T23:05:53.1152086Z         },
2026-06-21T23:05:53.1152167Z         "unit": {
2026-06-21T23:05:53.1152257Z           "complete": true,
2026-06-21T23:05:53.1152340Z           "evidence": [
2026-06-21T23:05:53.1152410Z             {
2026-06-21T23:05:53.1152519Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T23:05:53.1152601Z               "line": 37
2026-06-21T23:05:53.1152683Z             },
2026-06-21T23:05:53.1152762Z             {
2026-06-21T23:05:53.1152862Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T23:05:53.1153066Z               "line": 67
2026-06-21T23:05:53.1153146Z             }
2026-06-21T23:05:53.1153337Z           ]
2026-06-21T23:05:53.1153414Z         }
2026-06-21T23:05:53.1153494Z       }
2026-06-21T23:05:53.1153570Z     },
2026-06-21T23:05:53.1153647Z     {
2026-06-21T23:05:53.1153737Z       "id": "REQ-TERM-4",
2026-06-21T23:05:53.1154199Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T23:05:53.1154291Z       "requiredStages": [
2026-06-21T23:05:53.1154372Z         "impl",
2026-06-21T23:05:53.1154443Z         "unit",
2026-06-21T23:05:53.1154519Z         "int"
2026-06-21T23:05:53.1154587Z       ],
2026-06-21T23:05:53.1154671Z       "stages": {
2026-06-21T23:05:53.1154752Z         "doc": {
2026-06-21T23:05:53.1154833Z           "complete": false,
2026-06-21T23:05:53.1154921Z           "evidence": []
2026-06-21T23:05:53.1155000Z         },
2026-06-21T23:05:53.1155077Z         "impl": {
2026-06-21T23:05:53.1155168Z           "complete": true,
2026-06-21T23:05:53.1155250Z           "evidence": [
2026-06-21T23:05:53.1155334Z             {
2026-06-21T23:05:53.1155444Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1155526Z               "line": 37
2026-06-21T23:05:53.1155607Z             },
2026-06-21T23:05:53.1155687Z             {
2026-06-21T23:05:53.1155805Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:05:53.1155887Z               "line": 25
2026-06-21T23:05:53.1155966Z             },
2026-06-21T23:05:53.1156051Z             {
2026-06-21T23:05:53.1156165Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:05:53.1156247Z               "line": 114
2026-06-21T23:05:53.1156332Z             },
2026-06-21T23:05:53.1156408Z             {
2026-06-21T23:05:53.1156524Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:05:53.1156614Z               "line": 267
2026-06-21T23:05:53.1156695Z             },
2026-06-21T23:05:53.1156781Z             {
2026-06-21T23:05:53.1156881Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:05:53.1156972Z               "line": 289
2026-06-21T23:05:53.1157051Z             },
2026-06-21T23:05:53.1157139Z             {
2026-06-21T23:05:53.1157253Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:05:53.1157334Z               "line": 307
2026-06-21T23:05:53.1157420Z             },
2026-06-21T23:05:53.1157492Z             {
2026-06-21T23:05:53.1157610Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T23:05:53.1157691Z               "line": 33
2026-06-21T23:05:53.1157769Z             },
2026-06-21T23:05:53.1157850Z             {
2026-06-21T23:05:53.1157953Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1158045Z               "line": 52
2026-06-21T23:05:53.1158112Z             },
2026-06-21T23:05:53.1158197Z             {
2026-06-21T23:05:53.1158310Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1158396Z               "line": 180
2026-06-21T23:05:53.1158472Z             },
2026-06-21T23:05:53.1158547Z             {
2026-06-21T23:05:53.1158660Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1158747Z               "line": 190
2026-06-21T23:05:53.1158828Z             },
2026-06-21T23:05:53.1158909Z             {
2026-06-21T23:05:53.1159086Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1159176Z               "line": 250
2026-06-21T23:05:53.1159256Z             },
2026-06-21T23:05:53.1159337Z             {
2026-06-21T23:05:53.1159448Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.1159539Z               "line": 284
2026-06-21T23:05:53.1159628Z             },
2026-06-21T23:05:53.1159705Z             {
2026-06-21T23:05:53.1159824Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.1160020Z               "line": 295
2026-06-21T23:05:53.1160096Z             },
2026-06-21T23:05:53.1160272Z             {
2026-06-21T23:05:53.1160373Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1160458Z               "line": 1193
2026-06-21T23:05:53.1160539Z             }
2026-06-21T23:05:53.1160626Z           ]
2026-06-21T23:05:53.1160698Z         },
2026-06-21T23:05:53.1160787Z         "int": {
2026-06-21T23:05:53.1160868Z           "complete": true,
2026-06-21T23:05:53.1160956Z           "evidence": [
2026-06-21T23:05:53.1161037Z             {
2026-06-21T23:05:53.1161139Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T23:05:53.1161229Z               "line": 18
2026-06-21T23:05:53.1161306Z             }
2026-06-21T23:05:53.1161388Z           ]
2026-06-21T23:05:53.1161468Z         },
2026-06-21T23:05:53.1161549Z         "unit": {
2026-06-21T23:05:53.1161640Z           "complete": true,
2026-06-21T23:05:53.1161726Z           "evidence": [
2026-06-21T23:05:53.1161816Z             {
2026-06-21T23:05:53.1161922Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1162012Z               "line": 364
2026-06-21T23:05:53.1162093Z             },
2026-06-21T23:05:53.1162178Z             {
2026-06-21T23:05:53.1162289Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1162374Z               "line": 416
2026-06-21T23:05:53.1162454Z             },
2026-06-21T23:05:53.1162536Z             {
2026-06-21T23:05:53.1162647Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1162732Z               "line": 426
2026-06-21T23:05:53.1162817Z             },
2026-06-21T23:05:53.1162900Z             {
2026-06-21T23:05:53.1163008Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:05:53.1163103Z               "line": 436
2026-06-21T23:05:53.1163185Z             },
2026-06-21T23:05:53.1163267Z             {
2026-06-21T23:05:53.1163384Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:05:53.1163474Z               "line": 456
2026-06-21T23:05:53.1163556Z             },
2026-06-21T23:05:53.1163640Z             {
2026-06-21T23:05:53.1163754Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:05:53.1163839Z               "line": 478
2026-06-21T23:05:53.1163916Z             },
2026-06-21T23:05:53.1164006Z             {
2026-06-21T23:05:53.1164120Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:05:53.1164202Z               "line": 491
2026-06-21T23:05:53.1164283Z             },
2026-06-21T23:05:53.1164354Z             {
2026-06-21T23:05:53.1164474Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:05:53.1164560Z               "line": 502
2026-06-21T23:05:53.1164641Z             },
2026-06-21T23:05:53.1164716Z             {
2026-06-21T23:05:53.1164823Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T23:05:53.1164903Z               "line": 108
2026-06-21T23:05:53.1164993Z             },
2026-06-21T23:05:53.1165074Z             {
2026-06-21T23:05:53.1165190Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T23:05:53.1165280Z               "line": 119
2026-06-21T23:05:53.1165356Z             },
2026-06-21T23:05:53.1165437Z             {
2026-06-21T23:05:53.1165537Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T23:05:53.1165623Z               "line": 127
2026-06-21T23:05:53.1165694Z             },
2026-06-21T23:05:53.1165781Z             {
2026-06-21T23:05:53.1165908Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1165985Z               "line": 474
2026-06-21T23:05:53.1166072Z             },
2026-06-21T23:05:53.1166144Z             {
2026-06-21T23:05:53.1166261Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1166346Z               "line": 501
2026-06-21T23:05:53.1166428Z             },
2026-06-21T23:05:53.1166517Z             {
2026-06-21T23:05:53.1166625Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1166788Z               "line": 520
2026-06-21T23:05:53.1166935Z             },
2026-06-21T23:05:53.1167026Z             {
2026-06-21T23:05:53.1167136Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1167226Z               "line": 535
2026-06-21T23:05:53.1167306Z             },
2026-06-21T23:05:53.1167385Z             {
2026-06-21T23:05:53.1167503Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1167588Z               "line": 561
2026-06-21T23:05:53.1167665Z             },
2026-06-21T23:05:53.1167746Z             {
2026-06-21T23:05:53.1167856Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1167946Z               "line": 581
2026-06-21T23:05:53.1168024Z             },
2026-06-21T23:05:53.1168099Z             {
2026-06-21T23:05:53.1168208Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1168290Z               "line": 591
2026-06-21T23:05:53.1168381Z             },
2026-06-21T23:05:53.1168461Z             {
2026-06-21T23:05:53.1168575Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1168668Z               "line": 683
2026-06-21T23:05:53.1168753Z             },
2026-06-21T23:05:53.1168832Z             {
2026-06-21T23:05:53.1169032Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.1169121Z               "line": 885
2026-06-21T23:05:53.1169196Z             },
2026-06-21T23:05:53.1169278Z             {
2026-06-21T23:05:53.1169379Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1169483Z               "line": 9792
2026-06-21T23:05:53.1169564Z             }
2026-06-21T23:05:53.1169646Z           ]
2026-06-21T23:05:53.1169726Z         }
2026-06-21T23:05:53.1169807Z       }
2026-06-21T23:05:53.1169893Z     },
2026-06-21T23:05:53.1169975Z     {
2026-06-21T23:05:53.1170065Z       "id": "REQ-TERM-5",
2026-06-21T23:05:53.1171525Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T23:05:53.1171634Z       "requiredStages": [
2026-06-21T23:05:53.1171709Z         "doc",
2026-06-21T23:05:53.1171794Z         "impl",
2026-06-21T23:05:53.1171876Z         "unit",
2026-06-21T23:05:53.1171953Z         "int"
2026-06-21T23:05:53.1172033Z       ],
2026-06-21T23:05:53.1172114Z       "stages": {
2026-06-21T23:05:53.1172186Z         "doc": {
2026-06-21T23:05:53.1172272Z           "complete": true,
2026-06-21T23:05:53.1172357Z           "evidence": [
2026-06-21T23:05:53.1172448Z             {
2026-06-21T23:05:53.1172544Z               "path": "docs/MANIFEST.md",
2026-06-21T23:05:53.1172640Z               "line": 234
2026-06-21T23:05:53.1172719Z             }
2026-06-21T23:05:53.1172796Z           ]
2026-06-21T23:05:53.1172882Z         },
2026-06-21T23:05:53.1172963Z         "impl": {
2026-06-21T23:05:53.1173053Z           "complete": true,
2026-06-21T23:05:53.1173135Z           "evidence": [
2026-06-21T23:05:53.1173216Z             {
2026-06-21T23:05:53.1173344Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1173426Z               "line": 75
2026-06-21T23:05:53.1173512Z             },
2026-06-21T23:05:53.1173587Z             {
2026-06-21T23:05:53.1173707Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1173789Z               "line": 131
2026-06-21T23:05:53.1173879Z             },
2026-06-21T23:05:53.1173958Z             {
2026-06-21T23:05:53.1174063Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:05:53.1174256Z               "line": 22
2026-06-21T23:05:53.1174347Z             },
2026-06-21T23:05:53.1174515Z             {
2026-06-21T23:05:53.1174628Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:05:53.1174714Z               "line": 87
2026-06-21T23:05:53.1174796Z             },
2026-06-21T23:05:53.1174877Z             {
2026-06-21T23:05:53.1174981Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T23:05:53.1175063Z               "line": 30
2026-06-21T23:05:53.1175139Z             },
2026-06-21T23:05:53.1175224Z             {
2026-06-21T23:05:53.1175334Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1175416Z               "line": 103
2026-06-21T23:05:53.1175496Z             },
2026-06-21T23:05:53.1175577Z             {
2026-06-21T23:05:53.1175692Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1175769Z               "line": 167
2026-06-21T23:05:53.1175854Z             },
2026-06-21T23:05:53.1175940Z             {
2026-06-21T23:05:53.1176055Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1176144Z               "line": 434
2026-06-21T23:05:53.1176225Z             },
2026-06-21T23:05:53.1176308Z             {
2026-06-21T23:05:53.1176412Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1176502Z               "line": 5650
2026-06-21T23:05:53.1176584Z             },
2026-06-21T23:05:53.1176661Z             {
2026-06-21T23:05:53.1176764Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1176854Z               "line": 5957
2026-06-21T23:05:53.1176935Z             }
2026-06-21T23:05:53.1177016Z           ]
2026-06-21T23:05:53.1177096Z         },
2026-06-21T23:05:53.1177171Z         "int": {
2026-06-21T23:05:53.1177262Z           "complete": true,
2026-06-21T23:05:53.1177343Z           "evidence": [
2026-06-21T23:05:53.1177424Z             {
2026-06-21T23:05:53.1177567Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T23:05:53.1177658Z               "line": 17
2026-06-21T23:05:53.1177744Z             }
2026-06-21T23:05:53.1177829Z           ]
2026-06-21T23:05:53.1177915Z         },
2026-06-21T23:05:53.1177997Z         "unit": {
2026-06-21T23:05:53.1178082Z           "complete": true,
2026-06-21T23:05:53.1178168Z           "evidence": [
2026-06-21T23:05:53.1178249Z             {
2026-06-21T23:05:53.1178363Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1178444Z               "line": 375
2026-06-21T23:05:53.1178525Z             },
2026-06-21T23:05:53.1178598Z             {
2026-06-21T23:05:53.1178711Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:05:53.1178792Z               "line": 162
2026-06-21T23:05:53.1178874Z             },
2026-06-21T23:05:53.1179059Z             {
2026-06-21T23:05:53.1179165Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:05:53.1179247Z               "line": 179
2026-06-21T23:05:53.1179336Z             },
2026-06-21T23:05:53.1179416Z             {
2026-06-21T23:05:53.1179521Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:05:53.1179616Z               "line": 201
2026-06-21T23:05:53.1179690Z             },
2026-06-21T23:05:53.1179761Z             {
2026-06-21T23:05:53.1179872Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:05:53.1179953Z               "line": 212
2026-06-21T23:05:53.1180029Z             },
2026-06-21T23:05:53.1180109Z             {
2026-06-21T23:05:53.1180220Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:05:53.1180306Z               "line": 223
2026-06-21T23:05:53.1180391Z             },
2026-06-21T23:05:53.1180467Z             {
2026-06-21T23:05:53.1180582Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.1180663Z               "line": 1525
2026-06-21T23:05:53.1180743Z             },
2026-06-21T23:05:53.1180826Z             {
2026-06-21T23:05:53.1180940Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.1181146Z               "line": 1568
2026-06-21T23:05:53.1181226Z             },
2026-06-21T23:05:53.1181383Z             {
2026-06-21T23:05:53.1181513Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1181588Z               "line": 606
2026-06-21T23:05:53.1181664Z             },
2026-06-21T23:05:53.1181751Z             {
2026-06-21T23:05:53.1181865Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1181955Z               "line": 634
2026-06-21T23:05:53.1182032Z             },
2026-06-21T23:05:53.1182128Z             {
2026-06-21T23:05:53.1182250Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1182330Z               "line": 646
2026-06-21T23:05:53.1182412Z             },
2026-06-21T23:05:53.1182494Z             {
2026-06-21T23:05:53.1182607Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1182688Z               "line": 669
2026-06-21T23:05:53.1182775Z             },
2026-06-21T23:05:53.1182851Z             {
2026-06-21T23:05:53.1182945Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1183032Z               "line": 8503
2026-06-21T23:05:53.1183114Z             },
2026-06-21T23:05:53.1183195Z             {
2026-06-21T23:05:53.1183293Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1183371Z               "line": 8561
2026-06-21T23:05:53.1183457Z             }
2026-06-21T23:05:53.1183528Z           ]
2026-06-21T23:05:53.1183613Z         }
2026-06-21T23:05:53.1183691Z       }
2026-06-21T23:05:53.1183772Z     },
2026-06-21T23:05:53.1183852Z     {
2026-06-21T23:05:53.1183947Z       "id": "REQ-TERM-6",
2026-06-21T23:05:53.1185012Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T23:05:53.1185109Z       "requiredStages": [
2026-06-21T23:05:53.1185193Z         "impl",
2026-06-21T23:05:53.1185274Z         "unit",
2026-06-21T23:05:53.1185356Z         "int"
2026-06-21T23:05:53.1185442Z       ],
2026-06-21T23:05:53.1185522Z       "stages": {
2026-06-21T23:05:53.1185609Z         "doc": {
2026-06-21T23:05:53.1185699Z           "complete": false,
2026-06-21T23:05:53.1185789Z           "evidence": []
2026-06-21T23:05:53.1185875Z         },
2026-06-21T23:05:53.1185952Z         "impl": {
2026-06-21T23:05:53.1186042Z           "complete": true,
2026-06-21T23:05:53.1186127Z           "evidence": [
2026-06-21T23:05:53.1186213Z             {
2026-06-21T23:05:53.1186324Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1186415Z               "line": 132
2026-06-21T23:05:53.1186500Z             },
2026-06-21T23:05:53.1186582Z             {
2026-06-21T23:05:53.1186690Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1186771Z               "line": 187
2026-06-21T23:05:53.1186858Z             },
2026-06-21T23:05:53.1186935Z             {
2026-06-21T23:05:53.1187052Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:05:53.1187139Z               "line": 17
2026-06-21T23:05:53.1187216Z             },
2026-06-21T23:05:53.1187302Z             {
2026-06-21T23:05:53.1187405Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:05:53.1187495Z               "line": 104
2026-06-21T23:05:53.1187572Z             },
2026-06-21T23:05:53.1187651Z             {
2026-06-21T23:05:53.1187769Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1187851Z               "line": 319
2026-06-21T23:05:53.1187932Z             },
2026-06-21T23:05:53.1188008Z             {
2026-06-21T23:05:53.1188117Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1188280Z               "line": 396
2026-06-21T23:05:53.1188370Z             }
2026-06-21T23:05:53.1188441Z           ]
2026-06-21T23:05:53.1188595Z         },
2026-06-21T23:05:53.1188670Z         "int": {
2026-06-21T23:05:53.1188751Z           "complete": true,
2026-06-21T23:05:53.1188843Z           "evidence": [
2026-06-21T23:05:53.1188928Z             {
2026-06-21T23:05:53.1192040Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T23:05:53.1192148Z               "line": 18
2026-06-21T23:05:53.1192229Z             }
2026-06-21T23:05:53.1192306Z           ]
2026-06-21T23:05:53.1192388Z         },
2026-06-21T23:05:53.1192472Z         "unit": {
2026-06-21T23:05:53.1192563Z           "complete": true,
2026-06-21T23:05:53.1192650Z           "evidence": [
2026-06-21T23:05:53.1192735Z             {
2026-06-21T23:05:53.1192853Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:05:53.1192943Z               "line": 135
2026-06-21T23:05:53.1193040Z             },
2026-06-21T23:05:53.1193125Z             {
2026-06-21T23:05:53.1193244Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:05:53.1193330Z               "line": 150
2026-06-21T23:05:53.1193416Z             },
2026-06-21T23:05:53.1193497Z             {
2026-06-21T23:05:53.1193602Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:05:53.1193674Z               "line": 166
2026-06-21T23:05:53.1193760Z             },
2026-06-21T23:05:53.1193830Z             {
2026-06-21T23:05:53.1193941Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:05:53.1194026Z               "line": 257
2026-06-21T23:05:53.1194103Z             },
2026-06-21T23:05:53.1194183Z             {
2026-06-21T23:05:53.1194299Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1194388Z               "line": 738
2026-06-21T23:05:53.1194474Z             },
2026-06-21T23:05:53.1194541Z             {
2026-06-21T23:05:53.1194656Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1194745Z               "line": 759
2026-06-21T23:05:53.1194822Z             },
2026-06-21T23:05:53.1194909Z             {
2026-06-21T23:05:53.1195027Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:05:53.1195112Z               "line": 726
2026-06-21T23:05:53.1195203Z             }
2026-06-21T23:05:53.1195274Z           ]
2026-06-21T23:05:53.1195354Z         }
2026-06-21T23:05:53.1195434Z       }
2026-06-21T23:05:53.1195510Z     },
2026-06-21T23:05:53.1195587Z     {
2026-06-21T23:05:53.1195682Z       "id": "REQ-TERM-7",
2026-06-21T23:05:53.1196803Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T23:05:53.1196908Z       "requiredStages": [
2026-06-21T23:05:53.1196998Z         "impl",
2026-06-21T23:05:53.1197079Z         "unit",
2026-06-21T23:05:53.1197166Z         "int"
2026-06-21T23:05:53.1197241Z       ],
2026-06-21T23:05:53.1197332Z       "stages": {
2026-06-21T23:05:53.1197413Z         "doc": {
2026-06-21T23:05:53.1197504Z           "complete": false,
2026-06-21T23:05:53.1197584Z           "evidence": []
2026-06-21T23:05:53.1197656Z         },
2026-06-21T23:05:53.1197743Z         "impl": {
2026-06-21T23:05:53.1197829Z           "complete": true,
2026-06-21T23:05:53.1197918Z           "evidence": [
2026-06-21T23:05:53.1197998Z             {
2026-06-21T23:05:53.1198122Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1198202Z               "line": 133
2026-06-21T23:05:53.1198282Z             },
2026-06-21T23:05:53.1198362Z             {
2026-06-21T23:05:53.1198469Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1198706Z               "line": 326
2026-06-21T23:05:53.1198784Z             },
2026-06-21T23:05:53.1199055Z             {
2026-06-21T23:05:53.1199169Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T23:05:53.1199254Z               "line": 15
2026-06-21T23:05:53.1199331Z             },
2026-06-21T23:05:53.1199413Z             {
2026-06-21T23:05:53.1199532Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T23:05:53.1199612Z               "line": 32
2026-06-21T23:05:53.1199685Z             },
2026-06-21T23:05:53.1199766Z             {
2026-06-21T23:05:53.1199875Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T23:05:53.1199960Z               "line": 49
2026-06-21T23:05:53.1200038Z             },
2026-06-21T23:05:53.1200118Z             {
2026-06-21T23:05:53.1200232Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1200315Z               "line": 286
2026-06-21T23:05:53.1200386Z             },
2026-06-21T23:05:53.1200470Z             {
2026-06-21T23:05:53.1200583Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1200660Z               "line": 320
2026-06-21T23:05:53.1200741Z             }
2026-06-21T23:05:53.1200815Z           ]
2026-06-21T23:05:53.1200891Z         },
2026-06-21T23:05:53.1200972Z         "int": {
2026-06-21T23:05:53.1201069Z           "complete": true,
2026-06-21T23:05:53.1201159Z           "evidence": [
2026-06-21T23:05:53.1201234Z             {
2026-06-21T23:05:53.1201374Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T23:05:53.1201464Z               "line": 19
2026-06-21T23:05:53.1201544Z             }
2026-06-21T23:05:53.1201622Z           ]
2026-06-21T23:05:53.1201698Z         },
2026-06-21T23:05:53.1201783Z         "unit": {
2026-06-21T23:05:53.1201864Z           "complete": true,
2026-06-21T23:05:53.1201946Z           "evidence": [
2026-06-21T23:05:53.1202027Z             {
2026-06-21T23:05:53.1202145Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1202227Z               "line": 455
2026-06-21T23:05:53.1202318Z             },
2026-06-21T23:05:53.1202399Z             {
2026-06-21T23:05:53.1202494Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:05:53.1202581Z               "line": 568
2026-06-21T23:05:53.1202661Z             },
2026-06-21T23:05:53.1202742Z             {
2026-06-21T23:05:53.1202847Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T23:05:53.1202929Z               "line": 58
2026-06-21T23:05:53.1203013Z             },
2026-06-21T23:05:53.1203080Z             {
2026-06-21T23:05:53.1203186Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T23:05:53.1203263Z               "line": 77
2026-06-21T23:05:53.1203342Z             },
2026-06-21T23:05:53.1203423Z             {
2026-06-21T23:05:53.1203527Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T23:05:53.1203614Z               "line": 87
2026-06-21T23:05:53.1203694Z             },
2026-06-21T23:05:53.1203775Z             {
2026-06-21T23:05:53.1203881Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T23:05:53.1203971Z               "line": 94
2026-06-21T23:05:53.1204052Z             },
2026-06-21T23:05:53.1204128Z             {
2026-06-21T23:05:53.1204243Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1204320Z               "line": 691
2026-06-21T23:05:53.1204405Z             },
2026-06-21T23:05:53.1204476Z             {
2026-06-21T23:05:53.1204591Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:05:53.1204681Z               "line": 716
2026-06-21T23:05:53.1204757Z             }
2026-06-21T23:05:53.1204835Z           ]
2026-06-21T23:05:53.1204920Z         }
2026-06-21T23:05:53.1205001Z       }
2026-06-21T23:05:53.1205082Z     },
2026-06-21T23:05:53.1205164Z     {
2026-06-21T23:05:53.1205244Z       "id": "REQ-UPD-1",
2026-06-21T23:05:53.1205363Z       "title": "Peer-propagated update over P2P",
2026-06-21T23:05:53.1205563Z       "requiredStages": [
2026-06-21T23:05:53.1205644Z         "impl",
2026-06-21T23:05:53.1205801Z         "unit",
2026-06-21T23:05:53.1205881Z         "int"
2026-06-21T23:05:53.1205965Z       ],
2026-06-21T23:05:53.1206051Z       "stages": {
2026-06-21T23:05:53.1206132Z         "doc": {
2026-06-21T23:05:53.1206229Z           "complete": false,
2026-06-21T23:05:53.1206313Z           "evidence": []
2026-06-21T23:05:53.1206399Z         },
2026-06-21T23:05:53.1206477Z         "impl": {
2026-06-21T23:05:53.1206571Z           "complete": true,
2026-06-21T23:05:53.1206656Z           "evidence": [
2026-06-21T23:05:53.1206729Z             {
2026-06-21T23:05:53.1206852Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1206933Z               "line": 28
2026-06-21T23:05:53.1207015Z             },
2026-06-21T23:05:53.1207101Z             {
2026-06-21T23:05:53.1207224Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1207310Z               "line": 103
2026-06-21T23:05:53.1207387Z             },
2026-06-21T23:05:53.1207468Z             {
2026-06-21T23:05:53.1207577Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1207658Z               "line": 342
2026-06-21T23:05:53.1207740Z             },
2026-06-21T23:05:53.1207825Z             {
2026-06-21T23:05:53.1207944Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1208027Z               "line": 22
2026-06-21T23:05:53.1208102Z             },
2026-06-21T23:05:53.1208182Z             {
2026-06-21T23:05:53.1208288Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1208370Z               "line": 207
2026-06-21T23:05:53.1208450Z             },
2026-06-21T23:05:53.1208530Z             {
2026-06-21T23:05:53.1208639Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1208720Z               "line": 283
2026-06-21T23:05:53.1208800Z             },
2026-06-21T23:05:53.1208880Z             {
2026-06-21T23:05:53.1209057Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1209147Z               "line": 340
2026-06-21T23:05:53.1209223Z             },
2026-06-21T23:05:53.1209296Z             {
2026-06-21T23:05:53.1209400Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:05:53.1209476Z               "line": 37
2026-06-21T23:05:53.1209552Z             }
2026-06-21T23:05:53.1209634Z           ]
2026-06-21T23:05:53.1209710Z         },
2026-06-21T23:05:53.1209796Z         "int": {
2026-06-21T23:05:53.1209882Z           "complete": true,
2026-06-21T23:05:53.1209968Z           "evidence": [
2026-06-21T23:05:53.1210044Z             {
2026-06-21T23:05:53.1210167Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:05:53.1210245Z               "line": 207
2026-06-21T23:05:53.1210331Z             },
2026-06-21T23:05:53.1210410Z             {
2026-06-21T23:05:53.1210525Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:05:53.1210617Z               "line": 1082
2026-06-21T23:05:53.1210697Z             }
2026-06-21T23:05:53.1210778Z           ]
2026-06-21T23:05:53.1210845Z         },
2026-06-21T23:05:53.1210913Z         "unit": {
2026-06-21T23:05:53.1211003Z           "complete": true,
2026-06-21T23:05:53.1211082Z           "evidence": [
2026-06-21T23:05:53.1211167Z             {
2026-06-21T23:05:53.1211273Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1211348Z               "line": 490
2026-06-21T23:05:53.1211428Z             },
2026-06-21T23:05:53.1211504Z             {
2026-06-21T23:05:53.1211614Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1211700Z               "line": 616
2026-06-21T23:05:53.1211781Z             },
2026-06-21T23:05:53.1211862Z             {
2026-06-21T23:05:53.1211987Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T23:05:53.1212066Z               "line": 277
2026-06-21T23:05:53.1212286Z             },
2026-06-21T23:05:53.1212367Z             {
2026-06-21T23:05:53.1212478Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:05:53.1212654Z               "line": 124
2026-06-21T23:05:53.1212730Z             },
2026-06-21T23:05:53.1212811Z             {
2026-06-21T23:05:53.1212930Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:05:53.1213006Z               "line": 200
2026-06-21T23:05:53.1213092Z             }
2026-06-21T23:05:53.1213170Z           ]
2026-06-21T23:05:53.1213249Z         }
2026-06-21T23:05:53.1213330Z       }
2026-06-21T23:05:53.1213407Z     },
2026-06-21T23:05:53.1213489Z     {
2026-06-21T23:05:53.1213573Z       "id": "REQ-UPD-2",
2026-06-21T23:05:53.1213712Z       "title": "All binaries signature-verified before handoff",
2026-06-21T23:05:53.1213794Z       "requiredStages": [
2026-06-21T23:05:53.1213874Z         "impl",
2026-06-21T23:05:53.1213954Z         "unit"
2026-06-21T23:05:53.1214034Z       ],
2026-06-21T23:05:53.1214126Z       "stages": {
2026-06-21T23:05:53.1214208Z         "doc": {
2026-06-21T23:05:53.1214302Z           "complete": false,
2026-06-21T23:05:53.1214383Z           "evidence": []
2026-06-21T23:05:53.1214455Z         },
2026-06-21T23:05:53.1214537Z         "impl": {
2026-06-21T23:05:53.1214621Z           "complete": true,
2026-06-21T23:05:53.1214713Z           "evidence": [
2026-06-21T23:05:53.1214780Z             {
2026-06-21T23:05:53.1214894Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1214974Z               "line": 343
2026-06-21T23:05:53.1215051Z             },
2026-06-21T23:05:53.1215122Z             {
2026-06-21T23:05:53.1215237Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1215322Z               "line": 476
2026-06-21T23:05:53.1215396Z             },
2026-06-21T23:05:53.1215475Z             {
2026-06-21T23:05:53.1215580Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1215667Z               "line": 29
2026-06-21T23:05:53.1215752Z             },
2026-06-21T23:05:53.1215837Z             {
2026-06-21T23:05:53.1215942Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1216030Z               "line": 271
2026-06-21T23:05:53.1216100Z             },
2026-06-21T23:05:53.1216181Z             {
2026-06-21T23:05:53.1216289Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1216375Z               "line": 288
2026-06-21T23:05:53.1216460Z             },
2026-06-21T23:05:53.1216540Z             {
2026-06-21T23:05:53.1216645Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1216732Z               "line": 408
2026-06-21T23:05:53.1216812Z             },
2026-06-21T23:05:53.1216892Z             {
2026-06-21T23:05:53.1216993Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1217065Z               "line": 558
2026-06-21T23:05:53.1217146Z             },
2026-06-21T23:05:53.1217221Z             {
2026-06-21T23:05:53.1217342Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:53.1217422Z               "line": 155
2026-06-21T23:05:53.1217508Z             }
2026-06-21T23:05:53.1217584Z           ]
2026-06-21T23:05:53.1217666Z         },
2026-06-21T23:05:53.1217746Z         "int": {
2026-06-21T23:05:53.1217827Z           "complete": false,
2026-06-21T23:05:53.1217913Z           "evidence": []
2026-06-21T23:05:53.1217980Z         },
2026-06-21T23:05:53.1218061Z         "unit": {
2026-06-21T23:05:53.1218137Z           "complete": true,
2026-06-21T23:05:53.1218219Z           "evidence": [
2026-06-21T23:05:53.1218300Z             {
2026-06-21T23:05:53.1218395Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1218481Z               "line": 750
2026-06-21T23:05:53.1218563Z             },
2026-06-21T23:05:53.1218634Z             {
2026-06-21T23:05:53.1218738Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1218814Z               "line": 811
2026-06-21T23:05:53.1219066Z             },
2026-06-21T23:05:53.1219147Z             {
2026-06-21T23:05:53.1219256Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1219435Z               "line": 825
2026-06-21T23:05:53.1219512Z             },
2026-06-21T23:05:53.1219594Z             {
2026-06-21T23:05:53.1219698Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1219783Z               "line": 841
2026-06-21T23:05:53.1219851Z             },
2026-06-21T23:05:53.1219923Z             {
2026-06-21T23:05:53.1220027Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1220107Z               "line": 932
2026-06-21T23:05:53.1220194Z             },
2026-06-21T23:05:53.1220271Z             {
2026-06-21T23:05:53.1220384Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:53.1220465Z               "line": 414
2026-06-21T23:05:53.1220547Z             },
2026-06-21T23:05:53.1220623Z             {
2026-06-21T23:05:53.1220727Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:53.1220820Z               "line": 427
2026-06-21T23:05:53.1220905Z             },
2026-06-21T23:05:53.1220985Z             {
2026-06-21T23:05:53.1221100Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T23:05:53.1221182Z               "line": 410
2026-06-21T23:05:53.1221262Z             }
2026-06-21T23:05:53.1221334Z           ]
2026-06-21T23:05:53.1221410Z         }
2026-06-21T23:05:53.1221492Z       }
2026-06-21T23:05:53.1221572Z     },
2026-06-21T23:05:53.1221642Z     {
2026-06-21T23:05:53.1221727Z       "id": "REQ-UPD-3",
2026-06-21T23:05:53.1221889Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T23:05:53.1221983Z       "requiredStages": [
2026-06-21T23:05:53.1222064Z         "impl",
2026-06-21T23:05:53.1222141Z         "unit",
2026-06-21T23:05:53.1222223Z         "int"
2026-06-21T23:05:53.1222297Z       ],
2026-06-21T23:05:53.1222384Z       "stages": {
2026-06-21T23:05:53.1222466Z         "doc": {
2026-06-21T23:05:53.1222547Z           "complete": false,
2026-06-21T23:05:53.1222626Z           "evidence": []
2026-06-21T23:05:53.1222703Z         },
2026-06-21T23:05:53.1222790Z         "impl": {
2026-06-21T23:05:53.1222876Z           "complete": true,
2026-06-21T23:05:53.1222960Z           "evidence": [
2026-06-21T23:05:53.1223043Z             {
2026-06-21T23:05:53.1223147Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1223237Z               "line": 40
2026-06-21T23:05:53.1223314Z             },
2026-06-21T23:05:53.1223396Z             {
2026-06-21T23:05:53.1223499Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1223585Z               "line": 87
2026-06-21T23:05:53.1223667Z             },
2026-06-21T23:05:53.1223749Z             {
2026-06-21T23:05:53.1223862Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:53.1223943Z               "line": 1136
2026-06-21T23:05:53.1224025Z             },
2026-06-21T23:05:53.1224101Z             {
2026-06-21T23:05:53.1224210Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:53.1224297Z               "line": 2094
2026-06-21T23:05:53.1224383Z             },
2026-06-21T23:05:53.1224462Z             {
2026-06-21T23:05:53.1224571Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:53.1224652Z               "line": 26
2026-06-21T23:05:53.1224720Z             },
2026-06-21T23:05:53.1224805Z             {
2026-06-21T23:05:53.1224914Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:53.1224996Z               "line": 114
2026-06-21T23:05:53.1225077Z             },
2026-06-21T23:05:53.1225157Z             {
2026-06-21T23:05:53.1225263Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:53.1225345Z               "line": 246
2026-06-21T23:05:53.1225431Z             },
2026-06-21T23:05:53.1225501Z             {
2026-06-21T23:05:53.1225611Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1225806Z               "line": 2442
2026-06-21T23:05:53.1225877Z             }
2026-06-21T23:05:53.1226026Z           ]
2026-06-21T23:05:53.1226107Z         },
2026-06-21T23:05:53.1226183Z         "int": {
2026-06-21T23:05:53.1226270Z           "complete": true,
2026-06-21T23:05:53.1226360Z           "evidence": [
2026-06-21T23:05:53.1226440Z             {
2026-06-21T23:05:53.1226546Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T23:05:53.1226628Z               "line": 58
2026-06-21T23:05:53.1226712Z             }
2026-06-21T23:05:53.1226792Z           ]
2026-06-21T23:05:53.1226873Z         },
2026-06-21T23:05:53.1226959Z         "unit": {
2026-06-21T23:05:53.1227048Z           "complete": true,
2026-06-21T23:05:53.1227133Z           "evidence": [
2026-06-21T23:05:53.1227219Z             {
2026-06-21T23:05:53.1227335Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1227415Z               "line": 532
2026-06-21T23:05:53.1227496Z             },
2026-06-21T23:05:53.1227577Z             {
2026-06-21T23:05:53.1227691Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1227777Z               "line": 585
2026-06-21T23:05:53.1227859Z             },
2026-06-21T23:05:53.1227940Z             {
2026-06-21T23:05:53.1228058Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1228140Z               "line": 653
2026-06-21T23:05:53.1228217Z             },
2026-06-21T23:05:53.1228288Z             {
2026-06-21T23:05:53.1228392Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:05:53.1228474Z               "line": 1102
2026-06-21T23:05:53.1228550Z             },
2026-06-21T23:05:53.1228636Z             {
2026-06-21T23:05:53.1228740Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:53.1228828Z               "line": 271
2026-06-21T23:05:53.1228912Z             },
2026-06-21T23:05:53.1229050Z             {
2026-06-21T23:05:53.1229161Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:53.1229250Z               "line": 295
2026-06-21T23:05:53.1229332Z             },
2026-06-21T23:05:53.1229423Z             {
2026-06-21T23:05:53.1229528Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:53.1229608Z               "line": 316
2026-06-21T23:05:53.1229688Z             },
2026-06-21T23:05:53.1229764Z             {
2026-06-21T23:05:53.1229873Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:53.1229963Z               "line": 332
2026-06-21T23:05:53.1230048Z             }
2026-06-21T23:05:53.1230125Z           ]
2026-06-21T23:05:53.1230206Z         }
2026-06-21T23:05:53.1230287Z       }
2026-06-21T23:05:53.1230363Z     },
2026-06-21T23:05:53.1230440Z     {
2026-06-21T23:05:53.1230521Z       "id": "REQ-UPD-4",
2026-06-21T23:05:53.1230697Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T23:05:53.1230774Z       "requiredStages": [
2026-06-21T23:05:53.1230859Z         "impl",
2026-06-21T23:05:53.1230935Z         "unit"
2026-06-21T23:05:53.1231016Z       ],
2026-06-21T23:05:53.1231103Z       "stages": {
2026-06-21T23:05:53.1231183Z         "doc": {
2026-06-21T23:05:53.1231287Z           "complete": false,
2026-06-21T23:05:53.1231370Z           "evidence": []
2026-06-21T23:05:53.1231446Z         },
2026-06-21T23:05:53.1231526Z         "impl": {
2026-06-21T23:05:53.1231612Z           "complete": true,
2026-06-21T23:05:53.1231695Z           "evidence": [
2026-06-21T23:05:53.1231775Z             {
2026-06-21T23:05:53.1231899Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1231980Z               "line": 41
2026-06-21T23:05:53.1232062Z             },
2026-06-21T23:05:53.1232132Z             {
2026-06-21T23:05:53.1232245Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1232326Z               "line": 88
2026-06-21T23:05:53.1232412Z             },
2026-06-21T23:05:53.1232491Z             {
2026-06-21T23:05:53.1232706Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T23:05:53.1232792Z               "line": 23
2026-06-21T23:05:53.1232968Z             },
2026-06-21T23:05:53.1233050Z             {
2026-06-21T23:05:53.1233154Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T23:05:53.1233244Z               "line": 56
2026-06-21T23:05:53.1233321Z             },
2026-06-21T23:05:53.1233397Z             {
2026-06-21T23:05:53.1233506Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T23:05:53.1233588Z               "line": 77
2026-06-21T23:05:53.1233674Z             },
2026-06-21T23:05:53.1233754Z             {
2026-06-21T23:05:53.1233864Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:05:53.1233951Z               "line": 236
2026-06-21T23:05:53.1234032Z             },
2026-06-21T23:05:53.1234117Z             {
2026-06-21T23:05:53.1234217Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:05:53.1234299Z               "line": 108
2026-06-21T23:05:53.1234384Z             },
2026-06-21T23:05:53.1234465Z             {
2026-06-21T23:05:53.1234585Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:53.1234666Z               "line": 270
2026-06-21T23:05:53.1234741Z             },
2026-06-21T23:05:53.1234803Z             {
2026-06-21T23:05:53.1234905Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1234986Z               "line": 2441
2026-06-21T23:05:53.1235060Z             }
2026-06-21T23:05:53.1235169Z           ]
2026-06-21T23:05:53.1235722Z         },
2026-06-21T23:05:53.1235808Z         "int": {
2026-06-21T23:05:53.1235900Z           "complete": false,
2026-06-21T23:05:53.1235981Z           "evidence": []
2026-06-21T23:05:53.1236061Z         },
2026-06-21T23:05:53.1236143Z         "unit": {
2026-06-21T23:05:53.1236229Z           "complete": true,
2026-06-21T23:05:53.1236309Z           "evidence": [
2026-06-21T23:05:53.1236390Z             {
2026-06-21T23:05:53.1236510Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1236605Z               "line": 581
2026-06-21T23:05:53.1236695Z             },
2026-06-21T23:05:53.1236782Z             {
2026-06-21T23:05:53.1236901Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1236981Z               "line": 706
2026-06-21T23:05:53.1237068Z             },
2026-06-21T23:05:53.1237145Z             {
2026-06-21T23:05:53.1237258Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:05:53.1237339Z               "line": 384
2026-06-21T23:05:53.1237429Z             },
2026-06-21T23:05:53.1237510Z             {
2026-06-21T23:05:53.1237617Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T23:05:53.1237712Z               "line": 102
2026-06-21T23:05:53.1237794Z             },
2026-06-21T23:05:53.1237876Z             {
2026-06-21T23:05:53.1237984Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T23:05:53.1238075Z               "line": 123
2026-06-21T23:05:53.1238161Z             },
2026-06-21T23:05:53.1238242Z             {
2026-06-21T23:05:53.1238356Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T23:05:53.1238448Z               "line": 142
2026-06-21T23:05:53.1238528Z             },
2026-06-21T23:05:53.1238609Z             {
2026-06-21T23:05:53.1238714Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:05:53.1238800Z               "line": 582
2026-06-21T23:05:53.1238881Z             },
2026-06-21T23:05:53.1239024Z             {
2026-06-21T23:05:53.1239134Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:05:53.1239224Z               "line": 566
2026-06-21T23:05:53.1239310Z             },
2026-06-21T23:05:53.1239392Z             {
2026-06-21T23:05:53.1239510Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1239591Z               "line": 8256
2026-06-21T23:05:53.1239673Z             }
2026-06-21T23:05:53.1239750Z           ]
2026-06-21T23:05:53.1239829Z         }
2026-06-21T23:05:53.1240036Z       }
2026-06-21T23:05:53.1240116Z     },
2026-06-21T23:05:53.1240196Z     {
2026-06-21T23:05:53.1240387Z       "id": "REQ-UPD-5",
2026-06-21T23:05:53.1240532Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T23:05:53.1240618Z       "requiredStages": [
2026-06-21T23:05:53.1240695Z         "impl",
2026-06-21T23:05:53.1240781Z         "unit"
2026-06-21T23:05:53.1240856Z       ],
2026-06-21T23:05:53.1240937Z       "stages": {
2026-06-21T23:05:53.1241019Z         "doc": {
2026-06-21T23:05:53.1241110Z           "complete": false,
2026-06-21T23:05:53.1241195Z           "evidence": []
2026-06-21T23:05:53.1241267Z         },
2026-06-21T23:05:53.1241348Z         "impl": {
2026-06-21T23:05:53.1241429Z           "complete": true,
2026-06-21T23:05:53.1241519Z           "evidence": [
2026-06-21T23:05:53.1241595Z             {
2026-06-21T23:05:53.1241719Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.1241796Z               "line": 27
2026-06-21T23:05:53.1241881Z             },
2026-06-21T23:05:53.1241964Z             {
2026-06-21T23:05:53.1242086Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.1242167Z               "line": 87
2026-06-21T23:05:53.1242245Z             },
2026-06-21T23:05:53.1242316Z             {
2026-06-21T23:05:53.1242434Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.1242521Z               "line": 145
2026-06-21T23:05:53.1242603Z             },
2026-06-21T23:05:53.1242674Z             {
2026-06-21T23:05:53.1242796Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1242882Z               "line": 492
2026-06-21T23:05:53.1242967Z             },
2026-06-21T23:05:53.1243047Z             {
2026-06-21T23:05:53.1243151Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1243237Z               "line": 546
2026-06-21T23:05:53.1243309Z             }
2026-06-21T23:05:53.1243385Z           ]
2026-06-21T23:05:53.1243465Z         },
2026-06-21T23:05:53.1243548Z         "int": {
2026-06-21T23:05:53.1243638Z           "complete": false,
2026-06-21T23:05:53.1243728Z           "evidence": []
2026-06-21T23:05:53.1243814Z         },
2026-06-21T23:05:53.1243891Z         "unit": {
2026-06-21T23:05:53.1243981Z           "complete": true,
2026-06-21T23:05:53.1244062Z           "evidence": [
2026-06-21T23:05:53.1244143Z             {
2026-06-21T23:05:53.1244268Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.1244349Z               "line": 272
2026-06-21T23:05:53.1244434Z             },
2026-06-21T23:05:53.1244511Z             {
2026-06-21T23:05:53.1244629Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.1244710Z               "line": 286
2026-06-21T23:05:53.1244797Z             },
2026-06-21T23:05:53.1244869Z             {
2026-06-21T23:05:53.1244992Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.1245073Z               "line": 300
2026-06-21T23:05:53.1245160Z             },
2026-06-21T23:05:53.1245235Z             {
2026-06-21T23:05:53.1245359Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.1245441Z               "line": 314
2026-06-21T23:05:53.1245522Z             },
2026-06-21T23:05:53.1245602Z             {
2026-06-21T23:05:53.1245720Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.1245806Z               "line": 348
2026-06-21T23:05:53.1245884Z             },
2026-06-21T23:05:53.1245954Z             {
2026-06-21T23:05:53.1246073Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.1246169Z               "line": 1071
2026-06-21T23:05:53.1246246Z             }
2026-06-21T23:05:53.1246373Z           ]
2026-06-21T23:05:53.1246451Z         }
2026-06-21T23:05:53.1246536Z       }
2026-06-21T23:05:53.1246612Z     },
2026-06-21T23:05:53.1246693Z     {
2026-06-21T23:05:53.1246775Z       "id": "REQ-UPD-6",
2026-06-21T23:05:53.1247628Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T23:05:53.1247790Z       "requiredStages": [
2026-06-21T23:05:53.1247870Z         "doc",
2026-06-21T23:05:53.1247950Z         "impl",
2026-06-21T23:05:53.1248032Z         "unit",
2026-06-21T23:05:53.1248112Z         "int"
2026-06-21T23:05:53.1248196Z       ],
2026-06-21T23:05:53.1248268Z       "stages": {
2026-06-21T23:05:53.1248339Z         "doc": {
2026-06-21T23:05:53.1248431Z           "complete": true,
2026-06-21T23:05:53.1248511Z           "evidence": [
2026-06-21T23:05:53.1248592Z             {
2026-06-21T23:05:53.1248726Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T23:05:53.1248803Z               "line": 3
2026-06-21T23:05:53.1248883Z             },
2026-06-21T23:05:53.1249069Z             {
2026-06-21T23:05:53.1249173Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T23:05:53.1249265Z               "line": 3
2026-06-21T23:05:53.1249342Z             },
2026-06-21T23:05:53.1249417Z             {
2026-06-21T23:05:53.1249560Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T23:05:53.1249642Z               "line": 3
2026-06-21T23:05:53.1249722Z             }
2026-06-21T23:05:53.1249794Z           ]
2026-06-21T23:05:53.1249875Z         },
2026-06-21T23:05:53.1249952Z         "impl": {
2026-06-21T23:05:53.1250042Z           "complete": true,
2026-06-21T23:05:53.1250132Z           "evidence": [
2026-06-21T23:05:53.1250209Z             {
2026-06-21T23:05:53.1250329Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1250408Z               "line": 76
2026-06-21T23:05:53.1250485Z             },
2026-06-21T23:05:53.1250563Z             {
2026-06-21T23:05:53.1250685Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1250766Z               "line": 212
2026-06-21T23:05:53.1250841Z             },
2026-06-21T23:05:53.1250923Z             {
2026-06-21T23:05:53.1251035Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1251116Z               "line": 69
2026-06-21T23:05:53.1251197Z             },
2026-06-21T23:05:53.1251274Z             {
2026-06-21T23:05:53.1251383Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1251459Z               "line": 133
2026-06-21T23:05:53.1251546Z             },
2026-06-21T23:05:53.1251622Z             {
2026-06-21T23:05:53.1251731Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1251817Z               "line": 243
2026-06-21T23:05:53.1251899Z             },
2026-06-21T23:05:53.1251975Z             {
2026-06-21T23:05:53.1252079Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1252161Z               "line": 406
2026-06-21T23:05:53.1252237Z             },
2026-06-21T23:05:53.1252323Z             {
2026-06-21T23:05:53.1252437Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1252524Z               "line": 534
2026-06-21T23:05:53.1252608Z             },
2026-06-21T23:05:53.1252685Z             {
2026-06-21T23:05:53.1252800Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1252886Z               "line": 548
2026-06-21T23:05:53.1252971Z             },
2026-06-21T23:05:53.1255857Z             {
2026-06-21T23:05:53.1256016Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1256101Z               "line": 603
2026-06-21T23:05:53.1256181Z             },
2026-06-21T23:05:53.1256261Z             {
2026-06-21T23:05:53.1256391Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1256481Z               "line": 634
2026-06-21T23:05:53.1256561Z             },
2026-06-21T23:05:53.1256638Z             {
2026-06-21T23:05:53.1256919Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T23:05:53.1257006Z               "line": 137
2026-06-21T23:05:53.1257181Z             },
2026-06-21T23:05:53.1257263Z             {
2026-06-21T23:05:53.1257378Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T23:05:53.1257464Z               "line": 184
2026-06-21T23:05:53.1257534Z             },
2026-06-21T23:05:53.1257617Z             {
2026-06-21T23:05:53.1257735Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1257821Z               "line": 78
2026-06-21T23:05:53.1257897Z             },
2026-06-21T23:05:53.1257979Z             {
2026-06-21T23:05:53.1258082Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1258159Z               "line": 114
2026-06-21T23:05:53.1258241Z             },
2026-06-21T23:05:53.1258318Z             {
2026-06-21T23:05:53.1258430Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1258520Z               "line": 185
2026-06-21T23:05:53.1258601Z             },
2026-06-21T23:05:53.1258682Z             {
2026-06-21T23:05:53.1258785Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1258866Z               "line": 260
2026-06-21T23:05:53.1259025Z             },
2026-06-21T23:05:53.1259104Z             {
2026-06-21T23:05:53.1259205Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1259287Z               "line": 292
2026-06-21T23:05:53.1259372Z             },
2026-06-21T23:05:53.1259448Z             {
2026-06-21T23:05:53.1259554Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1259625Z               "line": 323
2026-06-21T23:05:53.1259710Z             },
2026-06-21T23:05:53.1259791Z             {
2026-06-21T23:05:53.1259892Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1259977Z               "line": 346
2026-06-21T23:05:53.1260053Z             },
2026-06-21T23:05:53.1260139Z             {
2026-06-21T23:05:53.1260245Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1260331Z               "line": 388
2026-06-21T23:05:53.1260416Z             },
2026-06-21T23:05:53.1260493Z             {
2026-06-21T23:05:53.1260607Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1260683Z               "line": 398
2026-06-21T23:05:53.1260764Z             },
2026-06-21T23:05:53.1260842Z             {
2026-06-21T23:05:53.1260945Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1261021Z               "line": 410
2026-06-21T23:05:53.1261104Z             },
2026-06-21T23:05:53.1261185Z             {
2026-06-21T23:05:53.1261293Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1261378Z               "line": 420
2026-06-21T23:05:53.1261459Z             },
2026-06-21T23:05:53.1261535Z             {
2026-06-21T23:05:53.1261648Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1261733Z               "line": 439
2026-06-21T23:05:53.1261815Z             },
2026-06-21T23:05:53.1261892Z             {
2026-06-21T23:05:53.1262005Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1262086Z               "line": 449
2026-06-21T23:05:53.1262173Z             },
2026-06-21T23:05:53.1262253Z             {
2026-06-21T23:05:53.1262357Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1262440Z               "line": 94
2026-06-21T23:05:53.1262520Z             },
2026-06-21T23:05:53.1262596Z             {
2026-06-21T23:05:53.1262711Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1262793Z               "line": 120
2026-06-21T23:05:53.1262878Z             },
2026-06-21T23:05:53.1262964Z             {
2026-06-21T23:05:53.1263070Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1263154Z               "line": 135
2026-06-21T23:05:53.1263226Z             },
2026-06-21T23:05:53.1263437Z             {
2026-06-21T23:05:53.1263535Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1263719Z               "line": 162
2026-06-21T23:05:53.1263798Z             },
2026-06-21T23:05:53.1263878Z             {
2026-06-21T23:05:53.1263983Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1264064Z               "line": 174
2026-06-21T23:05:53.1264148Z             },
2026-06-21T23:05:53.1264229Z             {
2026-06-21T23:05:53.1264333Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1264415Z               "line": 185
2026-06-21T23:05:53.1264491Z             },
2026-06-21T23:05:53.1264562Z             {
2026-06-21T23:05:53.1264668Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1264749Z               "line": 451
2026-06-21T23:05:53.1264820Z             },
2026-06-21T23:05:53.1264900Z             {
2026-06-21T23:05:53.1265002Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1265102Z               "line": 573
2026-06-21T23:05:53.1265182Z             },
2026-06-21T23:05:53.1265264Z             {
2026-06-21T23:05:53.1265378Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:53.1265464Z               "line": 171
2026-06-21T23:05:53.1265544Z             },
2026-06-21T23:05:53.1265627Z             {
2026-06-21T23:05:53.1265731Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:05:53.1265812Z               "line": 65
2026-06-21T23:05:53.1265883Z             },
2026-06-21T23:05:53.1265970Z             {
2026-06-21T23:05:53.1266074Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:05:53.1266160Z               "line": 71
2026-06-21T23:05:53.1266242Z             },
2026-06-21T23:05:53.1266327Z             {
2026-06-21T23:05:53.1266431Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:05:53.1266508Z               "line": 77
2026-06-21T23:05:53.1266581Z             },
2026-06-21T23:05:53.1266661Z             {
2026-06-21T23:05:53.1266765Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.1266855Z               "line": 778
2026-06-21T23:05:53.1266922Z             },
2026-06-21T23:05:53.1266999Z             {
2026-06-21T23:05:53.1267103Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.1267193Z               "line": 795
2026-06-21T23:05:53.1267275Z             },
2026-06-21T23:05:53.1267356Z             {
2026-06-21T23:05:53.1267455Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.1267543Z               "line": 838
2026-06-21T23:05:53.1267623Z             },
2026-06-21T23:05:53.1267704Z             {
2026-06-21T23:05:53.1267804Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.1267881Z               "line": 981
2026-06-21T23:05:53.1267962Z             },
2026-06-21T23:05:53.1268042Z             {
2026-06-21T23:05:53.1268133Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.1268229Z               "line": 1131
2026-06-21T23:05:53.1268309Z             }
2026-06-21T23:05:53.1268390Z           ]
2026-06-21T23:05:53.1268477Z         },
2026-06-21T23:05:53.1268563Z         "int": {
2026-06-21T23:05:53.1268657Z           "complete": true,
2026-06-21T23:05:53.1268733Z           "evidence": [
2026-06-21T23:05:53.1268821Z             {
2026-06-21T23:05:53.1269028Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T23:05:53.1269109Z               "line": 569
2026-06-21T23:05:53.1269190Z             },
2026-06-21T23:05:53.1269275Z             {
2026-06-21T23:05:53.1269374Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T23:05:53.1269460Z               "line": 135
2026-06-21T23:05:53.1269537Z             }
2026-06-21T23:05:53.1269613Z           ]
2026-06-21T23:05:53.1269693Z         },
2026-06-21T23:05:53.1269770Z         "unit": {
2026-06-21T23:05:53.1269866Z           "complete": true,
2026-06-21T23:05:53.1269942Z           "evidence": [
2026-06-21T23:05:53.1270138Z             {
2026-06-21T23:05:53.1270261Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1270438Z               "line": 626
2026-06-21T23:05:53.1270519Z             },
2026-06-21T23:05:53.1270600Z             {
2026-06-21T23:05:53.1270719Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1270791Z               "line": 675
2026-06-21T23:05:53.1270871Z             },
2026-06-21T23:05:53.1270952Z             {
2026-06-21T23:05:53.1271058Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:05:53.1271139Z               "line": 696
2026-06-21T23:05:53.1271209Z             },
2026-06-21T23:05:53.1271290Z             {
2026-06-21T23:05:53.1271402Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1271477Z               "line": 513
2026-06-21T23:05:53.1271553Z             },
2026-06-21T23:05:53.1271635Z             {
2026-06-21T23:05:53.1271750Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1271839Z               "line": 638
2026-06-21T23:05:53.1271919Z             },
2026-06-21T23:05:53.1272010Z             {
2026-06-21T23:05:53.1272119Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1272193Z               "line": 675
2026-06-21T23:05:53.1272274Z             },
2026-06-21T23:05:53.1272356Z             {
2026-06-21T23:05:53.1272457Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1272546Z               "line": 947
2026-06-21T23:05:53.1272627Z             },
2026-06-21T23:05:53.1272709Z             {
2026-06-21T23:05:53.1272809Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1272894Z               "line": 969
2026-06-21T23:05:53.1272976Z             },
2026-06-21T23:05:53.1273057Z             {
2026-06-21T23:05:53.1273166Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1273252Z               "line": 986
2026-06-21T23:05:53.1273329Z             },
2026-06-21T23:05:53.1273414Z             {
2026-06-21T23:05:53.1273519Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1273610Z               "line": 1001
2026-06-21T23:05:53.1273687Z             },
2026-06-21T23:05:53.1273771Z             {
2026-06-21T23:05:53.1273881Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1273954Z               "line": 1027
2026-06-21T23:05:53.1274039Z             },
2026-06-21T23:05:53.1274115Z             {
2026-06-21T23:05:53.1274226Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:05:53.1274312Z               "line": 457
2026-06-21T23:05:53.1274391Z             },
2026-06-21T23:05:53.1274472Z             {
2026-06-21T23:05:53.1274581Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T23:05:53.1274666Z               "line": 338
2026-06-21T23:05:53.1274746Z             },
2026-06-21T23:05:53.1274826Z             {
2026-06-21T23:05:53.1274927Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1275023Z               "line": 10549
2026-06-21T23:05:53.1275108Z             },
2026-06-21T23:05:53.1275189Z             {
2026-06-21T23:05:53.1275290Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.1275371Z               "line": 1260
2026-06-21T23:05:53.1275451Z             },
2026-06-21T23:05:53.1275528Z             {
2026-06-21T23:05:53.1275633Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T23:05:53.1275718Z               "line": 130
2026-06-21T23:05:53.1275799Z             }
2026-06-21T23:05:53.1275877Z           ]
2026-06-21T23:05:53.1275957Z         }
2026-06-21T23:05:53.1276038Z       }
2026-06-21T23:05:53.1276119Z     },
2026-06-21T23:05:53.1276202Z     {
2026-06-21T23:05:53.1276291Z       "id": "REQ-UPD-7",
2026-06-21T23:05:53.1278369Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T23:05:53.1278631Z       "requiredStages": [
2026-06-21T23:05:53.1278712Z         "impl",
2026-06-21T23:05:53.1278780Z         "unit"
2026-06-21T23:05:53.1278860Z       ],
2026-06-21T23:05:53.1279027Z       "stages": {
2026-06-21T23:05:53.1279109Z         "doc": {
2026-06-21T23:05:53.1279193Z           "complete": false,
2026-06-21T23:05:53.1279270Z           "evidence": []
2026-06-21T23:05:53.1279361Z         },
2026-06-21T23:05:53.1279442Z         "impl": {
2026-06-21T23:05:53.1279532Z           "complete": true,
2026-06-21T23:05:53.1279631Z           "evidence": [
2026-06-21T23:05:53.1279713Z             {
2026-06-21T23:05:53.1279811Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1279896Z               "line": 2626
2026-06-21T23:05:53.1279981Z             }
2026-06-21T23:05:53.1280049Z           ]
2026-06-21T23:05:53.1280126Z         },
2026-06-21T23:05:53.1280206Z         "int": {
2026-06-21T23:05:53.1280287Z           "complete": false,
2026-06-21T23:05:53.1280373Z           "evidence": []
2026-06-21T23:05:53.1280454Z         },
2026-06-21T23:05:53.1280535Z         "unit": {
2026-06-21T23:05:53.1280616Z           "complete": true,
2026-06-21T23:05:53.1280693Z           "evidence": [
2026-06-21T23:05:53.1280773Z             {
2026-06-21T23:05:53.1280868Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1280940Z               "line": 10525
2026-06-21T23:05:53.1281022Z             }
2026-06-21T23:05:53.1281102Z           ]
2026-06-21T23:05:53.1281183Z         }
2026-06-21T23:05:53.1281269Z       }
2026-06-21T23:05:53.1281346Z     },
2026-06-21T23:05:53.1281426Z     {
2026-06-21T23:05:53.1281508Z       "id": "REQ-UPD-8",
2026-06-21T23:05:53.1283932Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T23:05:53.1284027Z       "requiredStages": [
2026-06-21T23:05:53.1284113Z         "impl",
2026-06-21T23:05:53.1284190Z         "unit"
2026-06-21T23:05:53.1284270Z       ],
2026-06-21T23:05:53.1284351Z       "stages": {
2026-06-21T23:05:53.1284437Z         "doc": {
2026-06-21T23:05:53.1284514Z           "complete": false,
2026-06-21T23:05:53.1284599Z           "evidence": []
2026-06-21T23:05:53.1284680Z         },
2026-06-21T23:05:53.1284757Z         "impl": {
2026-06-21T23:05:53.1284843Z           "complete": true,
2026-06-21T23:05:53.1284928Z           "evidence": [
2026-06-21T23:05:53.1285008Z             {
2026-06-21T23:05:53.1285137Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1285213Z               "line": 77
2026-06-21T23:05:53.1285292Z             },
2026-06-21T23:05:53.1285373Z             {
2026-06-21T23:05:53.1285497Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1285579Z               "line": 49
2026-06-21T23:05:53.1285769Z             },
2026-06-21T23:05:53.1285850Z             {
2026-06-21T23:05:53.1285963Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1286146Z               "line": 152
2026-06-21T23:05:53.1286222Z             },
2026-06-21T23:05:53.1286292Z             {
2026-06-21T23:05:53.1286394Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1286480Z               "line": 215
2026-06-21T23:05:53.1286560Z             },
2026-06-21T23:05:53.1286636Z             {
2026-06-21T23:05:53.1286747Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1286832Z               "line": 230
2026-06-21T23:05:53.1286913Z             },
2026-06-21T23:05:53.1286985Z             {
2026-06-21T23:05:53.1287095Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1287175Z               "line": 247
2026-06-21T23:05:53.1287256Z             },
2026-06-21T23:05:53.1287333Z             {
2026-06-21T23:05:53.1287439Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1287532Z               "line": 269
2026-06-21T23:05:53.1287600Z             },
2026-06-21T23:05:53.1287668Z             {
2026-06-21T23:05:53.1287777Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1287866Z               "line": 66
2026-06-21T23:05:53.1287946Z             },
2026-06-21T23:05:53.1288023Z             {
2026-06-21T23:05:53.1288124Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1288204Z               "line": 154
2026-06-21T23:05:53.1288290Z             },
2026-06-21T23:05:53.1288367Z             {
2026-06-21T23:05:53.1288467Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1288547Z               "line": 2430
2026-06-21T23:05:53.1288624Z             },
2026-06-21T23:05:53.1288701Z             {
2026-06-21T23:05:53.1288801Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1288876Z               "line": 2493
2026-06-21T23:05:53.1289020Z             },
2026-06-21T23:05:53.1289105Z             {
2026-06-21T23:05:53.1289205Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1289292Z               "line": 2503
2026-06-21T23:05:53.1289378Z             },
2026-06-21T23:05:53.1289453Z             {
2026-06-21T23:05:53.1289548Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1289631Z               "line": 2510
2026-06-21T23:05:53.1289716Z             },
2026-06-21T23:05:53.1289801Z             {
2026-06-21T23:05:53.1289897Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1289988Z               "line": 2627
2026-06-21T23:05:53.1290063Z             },
2026-06-21T23:05:53.1290148Z             {
2026-06-21T23:05:53.1290248Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.1290334Z               "line": 480
2026-06-21T23:05:53.1290413Z             },
2026-06-21T23:05:53.1290480Z             {
2026-06-21T23:05:53.1290580Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:05:53.1290662Z               "line": 494
2026-06-21T23:05:53.1290752Z             }
2026-06-21T23:05:53.1290832Z           ]
2026-06-21T23:05:53.1290919Z         },
2026-06-21T23:05:53.1290996Z         "int": {
2026-06-21T23:05:53.1291081Z           "complete": false,
2026-06-21T23:05:53.1291171Z           "evidence": []
2026-06-21T23:05:53.1291248Z         },
2026-06-21T23:05:53.1291329Z         "unit": {
2026-06-21T23:05:53.1291414Z           "complete": true,
2026-06-21T23:05:53.1291510Z           "evidence": [
2026-06-21T23:05:53.1291587Z             {
2026-06-21T23:05:53.1291705Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:05:53.1291791Z               "line": 476
2026-06-21T23:05:53.1291869Z             },
2026-06-21T23:05:53.1291953Z             {
2026-06-21T23:05:53.1292058Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:05:53.1292140Z               "line": 580
2026-06-21T23:05:53.1292221Z             },
2026-06-21T23:05:53.1292297Z             {
2026-06-21T23:05:53.1292517Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1292602Z               "line": 10527
2026-06-21T23:05:53.1292779Z             },
2026-06-21T23:05:53.1292860Z             {
2026-06-21T23:05:53.1292959Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1293044Z               "line": 10549
2026-06-21T23:05:53.1293125Z             }
2026-06-21T23:05:53.1293206Z           ]
2026-06-21T23:05:53.1293281Z         }
2026-06-21T23:05:53.1293366Z       }
2026-06-21T23:05:53.1293447Z     },
2026-06-21T23:05:53.1293525Z     {
2026-06-21T23:05:53.1293610Z       "id": "REQ-UPD-9",
2026-06-21T23:05:53.1296105Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T23:05:53.1296223Z       "requiredStages": [
2026-06-21T23:05:53.1296309Z         "doc",
2026-06-21T23:05:53.1296415Z         "impl",
2026-06-21T23:05:53.1296501Z         "unit"
2026-06-21T23:05:53.1296576Z       ],
2026-06-21T23:05:53.1296668Z       "stages": {
2026-06-21T23:05:53.1296748Z         "doc": {
2026-06-21T23:05:53.1296834Z           "complete": true,
2026-06-21T23:05:53.1296920Z           "evidence": [
2026-06-21T23:05:53.1296997Z             {
2026-06-21T23:05:53.1297115Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.1297201Z               "line": 93
2026-06-21T23:05:53.1297288Z             },
2026-06-21T23:05:53.1297369Z             {
2026-06-21T23:05:53.1297469Z               "path": "docs/MANIFEST.md",
2026-06-21T23:05:53.1297559Z               "line": 285
2026-06-21T23:05:53.1297636Z             }
2026-06-21T23:05:53.1297721Z           ]
2026-06-21T23:05:53.1297798Z         },
2026-06-21T23:05:53.1297883Z         "impl": {
2026-06-21T23:05:53.1297980Z           "complete": true,
2026-06-21T23:05:53.1298059Z           "evidence": [
2026-06-21T23:05:53.1298136Z             {
2026-06-21T23:05:53.1298266Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.1298351Z               "line": 128
2026-06-21T23:05:53.1298421Z             },
2026-06-21T23:05:53.1298497Z             {
2026-06-21T23:05:53.1298617Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1298698Z               "line": 533
2026-06-21T23:05:53.1298797Z             },
2026-06-21T23:05:53.1298864Z             {
2026-06-21T23:05:53.1299069Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.1299155Z               "line": 459
2026-06-21T23:05:53.1299237Z             },
2026-06-21T23:05:53.1299322Z             {
2026-06-21T23:05:53.1299422Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.1299513Z               "line": 505
2026-06-21T23:05:53.1299590Z             },
2026-06-21T23:05:53.1299665Z             {
2026-06-21T23:05:53.1299789Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.1299871Z               "line": 928
2026-06-21T23:05:53.1299956Z             },
2026-06-21T23:05:53.1300037Z             {
2026-06-21T23:05:53.1300157Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:05:53.1300238Z               "line": 302
2026-06-21T23:05:53.1300318Z             },
2026-06-21T23:05:53.1300404Z             {
2026-06-21T23:05:53.1300618Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1300704Z               "line": 5675
2026-06-21T23:05:53.1300875Z             },
2026-06-21T23:05:53.1300955Z             {
2026-06-21T23:05:53.1301054Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1301135Z               "line": 5720
2026-06-21T23:05:53.1301213Z             },
2026-06-21T23:05:53.1301293Z             {
2026-06-21T23:05:53.1301387Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1301470Z               "line": 5857
2026-06-21T23:05:53.1301551Z             },
2026-06-21T23:05:53.1301627Z             {
2026-06-21T23:05:53.1301726Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1301804Z               "line": 5878
2026-06-21T23:05:53.1301885Z             },
2026-06-21T23:05:53.1301970Z             {
2026-06-21T23:05:53.1302061Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1302147Z               "line": 5901
2026-06-21T23:05:53.1302218Z             },
2026-06-21T23:05:53.1302303Z             {
2026-06-21T23:05:53.1302404Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1302485Z               "line": 5928
2026-06-21T23:05:53.1302571Z             }
2026-06-21T23:05:53.1302642Z           ]
2026-06-21T23:05:53.1302724Z         },
2026-06-21T23:05:53.1302805Z         "int": {
2026-06-21T23:05:53.1302899Z           "complete": false,
2026-06-21T23:05:53.1302990Z           "evidence": []
2026-06-21T23:05:53.1303068Z         },
2026-06-21T23:05:53.1303153Z         "unit": {
2026-06-21T23:05:53.1303228Z           "complete": true,
2026-06-21T23:05:53.1303315Z           "evidence": [
2026-06-21T23:05:53.1303397Z             {
2026-06-21T23:05:53.1303524Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:05:53.1303609Z               "line": 259
2026-06-21T23:05:53.1303690Z             },
2026-06-21T23:05:53.1303766Z             {
2026-06-21T23:05:53.1303879Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:05:53.1303974Z               "line": 657
2026-06-21T23:05:53.1304050Z             },
2026-06-21T23:05:53.1304137Z             {
2026-06-21T23:05:53.1304250Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:05:53.1304322Z               "line": 1107
2026-06-21T23:05:53.1304394Z             },
2026-06-21T23:05:53.1304466Z             {
2026-06-21T23:05:53.1304569Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1304652Z               "line": 7565
2026-06-21T23:05:53.1304737Z             }
2026-06-21T23:05:53.1304818Z           ]
2026-06-21T23:05:53.1304898Z         }
2026-06-21T23:05:53.1304981Z       }
2026-06-21T23:05:53.1305057Z     },
2026-06-21T23:05:53.1305143Z     {
2026-06-21T23:05:53.1305247Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-06-21T23:05:53.1310417Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-06-21T23:05:53.1310761Z       "requiredStages": [
2026-06-21T23:05:53.1310845Z         "doc",
2026-06-21T23:05:53.1310922Z         "impl",
2026-06-21T23:05:53.1311003Z         "unit"
2026-06-21T23:05:53.1311071Z       ],
2026-06-21T23:05:53.1311151Z       "stages": {
2026-06-21T23:05:53.1311217Z         "doc": {
2026-06-21T23:05:53.1311311Z           "complete": true,
2026-06-21T23:05:53.1311398Z           "evidence": [
2026-06-21T23:05:53.1311491Z             {
2026-06-21T23:05:53.1311586Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.1311681Z               "line": 342
2026-06-21T23:05:53.1311758Z             }
2026-06-21T23:05:53.1311834Z           ]
2026-06-21T23:05:53.1311920Z         },
2026-06-21T23:05:53.1312001Z         "impl": {
2026-06-21T23:05:53.1312097Z           "complete": true,
2026-06-21T23:05:53.1312187Z           "evidence": [
2026-06-21T23:05:53.1312263Z             {
2026-06-21T23:05:53.1312383Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:05:53.1312469Z               "line": 432
2026-06-21T23:05:53.1312554Z             },
2026-06-21T23:05:53.1312621Z             {
2026-06-21T23:05:53.1312735Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:53.1312816Z               "line": 683
2026-06-21T23:05:53.1312897Z             },
2026-06-21T23:05:53.1312984Z             {
2026-06-21T23:05:53.1313083Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:53.1313178Z               "line": 859
2026-06-21T23:05:53.1313250Z             },
2026-06-21T23:05:53.1313342Z             {
2026-06-21T23:05:53.1313455Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:53.1313536Z               "line": 777
2026-06-21T23:05:53.1313623Z             },
2026-06-21T23:05:53.1313694Z             {
2026-06-21T23:05:53.1313808Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:53.1313890Z               "line": 788
2026-06-21T23:05:53.1313967Z             }
2026-06-21T23:05:53.1314042Z           ]
2026-06-21T23:05:53.1314117Z         },
2026-06-21T23:05:53.1314202Z         "int": {
2026-06-21T23:05:53.1314279Z           "complete": false,
2026-06-21T23:05:53.1314368Z           "evidence": []
2026-06-21T23:05:53.1314444Z         },
2026-06-21T23:05:53.1314519Z         "unit": {
2026-06-21T23:05:53.1314601Z           "complete": true,
2026-06-21T23:05:53.1314678Z           "evidence": [
2026-06-21T23:05:53.1314763Z             {
2026-06-21T23:05:53.1314873Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:53.1314954Z               "line": 1448
2026-06-21T23:05:53.1315045Z             },
2026-06-21T23:05:53.1315120Z             {
2026-06-21T23:05:53.1315227Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:05:53.1315312Z               "line": 1605
2026-06-21T23:05:53.1315397Z             },
2026-06-21T23:05:53.1315473Z             {
2026-06-21T23:05:53.1315588Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:53.1315679Z               "line": 2554
2026-06-21T23:05:53.1315750Z             },
2026-06-21T23:05:53.1315836Z             {
2026-06-21T23:05:53.1315946Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:05:53.1316031Z               "line": 2621
2026-06-21T23:05:53.1316117Z             },
2026-06-21T23:05:53.1316195Z             {
2026-06-21T23:05:53.1316860Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:05:53.1317043Z               "line": 1002
2026-06-21T23:05:53.1317130Z             }
2026-06-21T23:05:53.1317212Z           ]
2026-06-21T23:05:53.1317469Z         }
2026-06-21T23:05:53.1317541Z       }
2026-06-21T23:05:53.1317616Z     },
2026-06-21T23:05:53.1317696Z     {
2026-06-21T23:05:53.1317788Z       "id": "REQ-WHOAMI-1",
2026-06-21T23:05:53.1319509Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T23:05:53.1319608Z       "requiredStages": [
2026-06-21T23:05:53.1319689Z         "doc",
2026-06-21T23:05:53.1319775Z         "impl",
2026-06-21T23:05:53.1319866Z         "unit"
2026-06-21T23:05:53.1319994Z       ],
2026-06-21T23:05:53.1320081Z       "stages": {
2026-06-21T23:05:53.1320171Z         "doc": {
2026-06-21T23:05:53.1320261Z           "complete": true,
2026-06-21T23:05:53.1320357Z           "evidence": [
2026-06-21T23:05:53.1320438Z             {
2026-06-21T23:05:53.1320528Z               "path": "CONTEXT.md",
2026-06-21T23:05:53.1320614Z               "line": 707
2026-06-21T23:05:53.1320691Z             }
2026-06-21T23:05:53.1320771Z           ]
2026-06-21T23:05:53.1320857Z         },
2026-06-21T23:05:53.1320938Z         "impl": {
2026-06-21T23:05:53.1321030Z           "complete": true,
2026-06-21T23:05:53.1321110Z           "evidence": [
2026-06-21T23:05:53.1321195Z             {
2026-06-21T23:05:53.1321297Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1321383Z               "line": 3190
2026-06-21T23:05:53.1321457Z             },
2026-06-21T23:05:53.1321529Z             {
2026-06-21T23:05:53.1321636Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1321716Z               "line": 3218
2026-06-21T23:05:53.1321805Z             }
2026-06-21T23:05:53.1321885Z           ]
2026-06-21T23:05:53.1321962Z         },
2026-06-21T23:05:53.1322052Z         "int": {
2026-06-21T23:05:53.1322132Z           "complete": false,
2026-06-21T23:05:53.1322227Z           "evidence": []
2026-06-21T23:05:53.1322309Z         },
2026-06-21T23:05:53.1322395Z         "unit": {
2026-06-21T23:05:53.1322484Z           "complete": true,
2026-06-21T23:05:53.1322571Z           "evidence": [
2026-06-21T23:05:53.1322662Z             {
2026-06-21T23:05:53.1322761Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1322846Z               "line": 7847
2026-06-21T23:05:53.1322924Z             },
2026-06-21T23:05:53.1323009Z             {
2026-06-21T23:05:53.1323128Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:05:53.1323244Z               "line": 7900
2026-06-21T23:05:53.1323329Z             }
2026-06-21T23:05:53.1323423Z           ]
2026-06-21T23:05:53.1323500Z         }
2026-06-21T23:05:53.1323597Z       }
2026-06-21T23:05:53.1323687Z     }
2026-06-21T23:05:53.1323762Z   ],
2026-06-21T23:05:53.1323854Z   "findings": []
2026-06-21T23:05:53.1323935Z }
